C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■5196  C++で演算子について教えてください
□投稿者/ あいこ -(2007/07/06(Fri) 13:54:37)

    分類:[C/C++] 

    VC++をはじめてまもなく、基本的なことで恐縮ですが、ご教示ください。
    ある図書で
    ”CFormViewクラス(CViewクラス派生)にエディットボックスIDがIDC_EDIT1があります。
     このエディットボックスを認識するためには

    CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);

    の記述をします。”
    とあるのですが、なにをしているのか、よくわかりません。
    "CEdit* myED1"は"CEdit *myED1"とおなじ意味ですか? (ポインタ変数なのですか?)
    (CEdit*)とGetDlhItem(IDC_EDIT1)との関係はどうなのでしょうか?

    いろいろ、MSDNやネットで調べてみたのですが、そこまで到達できません。
    どなたか、ご教示ください。
親記事 /過去ログ15より / 関連記事表示
削除チェック/

■92859  Re[1]: FloorとCeilingの有効桁数に関して
□投稿者/ 魔界の仮面弁士 -(2019/11/03(Sun) 10:58:27)
    2019/11/03(Sun) 11:41:38 編集(投稿者)

    No92856 (ぬこ さん) に返信
    > SingleやDoubleは
    > Integerとは異なり、
    > 1.99999992
    > や3.0000002
    > のような綺麗な整数ではない値をとるはずです。

    まず、そこの認識が間違っています。

    Single や Double は、2 や 3 という整数値なら、誤差なく格納のできる型です。
    小数部がジャスト 0 な整数値なら、Single なら 7 桁までは正確に保持できます。


    > Dim hh2 As Integer = CInt(Math.Floor(4.0! / 2))
    Single や Double は『二進小数』で管理される型なので、
    有効桁数の範囲内に納まるなら、2 で割っても誤差は生じません。

    十進数は「10」を基数としているため、「1÷10」や「1÷100」を誤差なく管理できます。
    でも「1÷3」は、有限桁数においては近似値表現となりますよね。

    三進数は「3」を基数としているため、「1÷3」や「1÷9」を誤差なく管理できます。
    二進数は「2」を基数としているため、「1÷2」や「1÷4」を誤差なく管理できますが
    「1÷10」は、有限桁数において近似値表現となります。


    なお、例示された値についてですが、
    1.99999992 は Single や Double では正確に表現できないため、Single なら
    1.99999988 という近似値(正確には 1.99999988079071044921875 )になってしまうはずです。

    そして Double の場合も、やはりピッタリ同じ値は持てません。
    1.99999992 に近い範囲で、Double 型で表現可能な値に丸められます。
    1.99999991999999915393004812358 … &H3FFFFFFFEA86711A
    1.99999991999999937597465304862 … &H3FFFFFFFEA86711B
    1.99999991999999959801925797365 … &H3FFFFFFFEA86711C
    1.99999991999999982006386289868 … &H3FFFFFFFEA86711D '☆少し小さい値
    1.99999992000000004210846782371 … &H3FFFFFFFEA86711E '★少し大きいが、これがもっとも近い
    1.99999992000000026415307274874 … &H3FFFFFFFEA86711F
    1.99999992000000048619767767377 … &H3FFFFFFFEA867120
    1.99999992000000070824228259880 … &H3FFFFFFFEA867121


    > 有効桁数のようなものが設定されているからなのでしょうか?
    符号ビットと指数部を取り除いた、「仮数部」のみを有効桁として扱うと
    Single 型の有効桁数は 二進小数表現で 23+1 桁。十進数に換算すると約 7.225 桁です。
    Double 型の有効桁数は 二進小数表現で 52+1 桁。十進数に換算すると約 15.955 桁です。

    Integer 型の有効桁数は 二進整数表現で 32-1桁。十進数に換算すると約 9.332 桁で、
    UInteger 型の有効桁数は 二進整数表現で 32桁。十進数に換算すると約 9.633 桁です。


    Integer という型で表現できる数値は、隣り合う数が常にジャスト 1 だけの差を持ちますよね。
    2 の前は 1 ですし、2 の次は 3 です。整数型ゆえ指数部が無いので、
    隣り合う値は常に「2 の 0 乗」すなわち 1 となります。


    それに対し、Single や Double においては、隣り合う値の間隔が一定ではありません。
    その絶対値が 0 に近いほど細かい差を表現でき、
    絶対値が大きくなるほど荒くなり、隣の値の差が広がっていきます。


    Single 型で表現可能な 2 の周辺値はこんな感じ。

    1.99999964237213134765625 … &H3FFFFFFD
    1.99999976158142089843750 … &H3FFFFFFE
    1.99999988079071044921875 … &H3FFFFFFF
    2.00000000000000000000000 … &H40000000 ★ジャスト2
    2.00000023841857910156250 … &H40000001
    2.00000047683715820312500 … &H40000002
    2.00000071525573730468750 … &H3FFFFFF3


    Single 型で表現可能な 200万 の周辺値はこんな感じ。

    1999999.625 … &H49F423FD
    1999999.750 … &H49F423FE
    1999999.875 … &H49F423FF
    2000000.000 … &H49F42400 ★ジャスト200万
    2000000.125 … &H49F42401
    2000000.250 … &H49F42402
    2000000.375 … &H49F42403


    Single 型で表現可能な 20億 の周辺値はこんな感じ。

    1999999616 … &H4EEE6B25
    1999999744 … &H4EEE6B26
    1999999872 … &H4EEE6B27
    2000000000 … &H4EEE6B28 ★ジャスト20億
    2000000128 … &H4EEE6B29
    2000000256 … &H4EEE6B2A
    2000000384 … &H4EEE6B2B


    Single 型で表現可能な 2兆 の周辺値はこんな感じ。

    1999999729664 … &H53E8D4A3
    1999999860736 … &H53E8D4A4
    1999999991808 … &H53E8D4A5 ★2兆マイナス8192
    2000000122880 … &H53E8D4A6 ☆2兆プラス122880
    2000000253952 … &H53E8D4A7
    2000000385024 … &H53E8D4A8
記事No.92856 のレス /過去ログ160より / 関連記事表示
削除チェック/

■97677  Re[6]: 同時に取得する方法
□投稿者/ 白音 -(2021/06/25(Fri) 16:05:44)
    No97673 (魔界の仮面弁士 さん) に返信

    これでいいのでしょうか?

      private static object Scalar(string selectStr)
      {
       object obj = null;
       string connstr = Properties.Settings.Default.ConnectionString;
       using (var connection = new SqlConnection(connstr))
       {
        using (SqlCommand command = new SqlCommand(selectStr, connection))
        {
         obj = command.ExecuteScalar();     
        }
        connection.Close();
       }
       return (obj);
      }
記事No.97623 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97680  Re[7]: 同時に取得する方法
□投稿者/ 魔界の仮面弁士 -(2021/06/25(Fri) 19:30:13)
    No97677 (白音 さん) に返信
    > これでいいのでしょうか?

    はい、それでよいと思います。

    もし、object 型だとキャストが面倒だというのであれば、
    代わりに dynamic 型で受けてみるのも良いかと思います。

    最初から型を明示して受け取りたい場合は、先に紹介した Dapper を使うのが便利です。
記事No.97623 のレス /過去ログ169より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -