次のコードを見て、Trunc関数の結果が異なるのはなぜですか?Trunc()function
procedure TForm1.Button1Click(Sender: TObject);
var
D: Double;
E: Extended;
I: Int64;
begin
D := Frac(101/100) * 100;
E := Frac(101/100) * 100;
I := Trunc(D);
ShowMessage('Trunc(Double): ' + IntToStr(I)); // Trunc(Double): 1
I := Trunc(E);
ShowMessage('Trunc(Extended): ' + IntToStr(I)); // Trunc(Extended): 0
end;
smok1、私たちは多くの場合、適切な形式のパラメータなしでフロート番号を調べて、我々は実際の値を取得することを前提としています。あなたが正しく言及したように、浮動小数点数は実際の数の近似値なので、もちろん間違っています。 +1 –
コンピュータが浮動小数点を近似値として格納することを説明するための+1 –
すべての浮動小数点は近似ではありません。 2の負のべき乗とそれらの和(例えば0.5)は近似することなく表される。 – gabr