>その値は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; 
    |