>したがって,以下のように,SimpleRoundTo の丸めの位置を小数点 3 桁目にすると
>下図のような結果となります.
以下のようなコードでも確認できます.
小数点以下,何桁目で丸めをするかということと,
何桁目までを表示するかということとは違うことにも注意します.
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,e,f:Extended;
StrText : string;
begin
e:= 179.9349;
f:= 179.9350;
StrText := FloatToStr(e) + sLineBreak +
FloatToStr(f) + sLineBreak + sLineBreak +
FloatToStr(SimpleRoundTo(e,-2)) + sLineBreak +
FloatToStr(SimpleRoundTo(f,-2)) + sLineBreak + sLineBreak +
FloatToStr(SimpleRoundTo(e,-3)) + sLineBreak +
FloatToStr(SimpleRoundTo(f,-3));
MessageBox(Handle, PChar(StrText), '結果', MB_OK);
end;
179.9349 を小数点 2 桁目で丸めると,179.93 となるのは,
小数点 3 桁目の値が 4 (5 よりも小さい) だからです.
最初に示したサンプルコードでの e の計算結果は,実際には以下のようになっています.
179.93499999999....
少なくても仮数部 (有効桁数) の 15 桁目までは 9 ということになります.
|