名前 題名 ▼ Mr.XRAYさん > >その値は179.9349999999995〜179.9350000000004の間にある? > > あ〜,こういうことを書かれると手抜きした私の立場が. (^^; > 立場を取り戻すために,こんなことやってみました.ヘヘヘッ > ほとんど意味ありませんが. > > 小数点 16 桁目を調べるために 16 乗しています. > 16 桁目も 9 になっています.あとちょっとだったようです > 思ったのですが,15 桁で丸めるというのは,内部処理でも精度 16 桁が限界 > だからなのかも知れません. > > > //----------------------------------------------------------------------------- > // (1)と(2)の計算式は,数学的には等しく,179.935となる > //----------------------------------------------------------------------------- > procedure TForm1.Button1Click(Sender: TObject); > var > A, B, C, D, E, F : Extended; > IntE : Int64; > IntF : Int64; > begin > Memo1.Lines.Clear; > Memo1.Font.Name := 'MS ゴシック'; > Memo1.Font.Size := 10; > > A := 389.7; > B := 94.4; > c := 30; > D := 0.35; > E := (A + B + C) * D; //(1) > F := A * D + B * D + C * D; //(2) > > //Int64は16乗が限界? > IntE := Trunc(E * Math.Power(10, 16)); > IntF := Trunc(F * Math.Power(10, 16)); > > Memo1.Lines.Add(IntToStr(intE)); > Memo1.Lines.Add(IntToStr(intF)); > end; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link