procedure TForm1.Button1Click(Sender: TObject);
var
aaa:double;
bbb:double;
begin
aaa:=202.2;
bbb:=200;
ShowMessage(FloatToStr(aaa-bbb));
end;打印出来的答案竟然是2.1999999999999999999999而不是2.2
如果将aaa换成212.2,答案则是10.2,而不是10.19999999999999999999,也就是说aaa-bbb>=10或<=-10时则又是精确计算出来。
我现在在做一工资管理程序,有时莫名其妙得出这样的答案,气死我也。
而在C++Builder也一样存在这个问题.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double aaa=202.2;
double bbb=200;
ShowMessage(FloatToStr(aaa-bbb));
}但是MS VC编译器则是这样的结果:
void CaaaDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString str1;
double aaa=202.2;
double bbb=200;
str1.Format("%lf",aaa-bbb);
MessageBox(str1);
}
得出2.200000,也多了5个0,但还好,没误差
var
aaa:double;
bbb:double;
begin
aaa:=202.2;
bbb:=200;
ShowMessage(FloatToStr(aaa-bbb));
end;打印出来的答案竟然是2.1999999999999999999999而不是2.2
如果将aaa换成212.2,答案则是10.2,而不是10.19999999999999999999,也就是说aaa-bbb>=10或<=-10时则又是精确计算出来。
我现在在做一工资管理程序,有时莫名其妙得出这样的答案,气死我也。
而在C++Builder也一样存在这个问题.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double aaa=202.2;
double bbb=200;
ShowMessage(FloatToStr(aaa-bbb));
}但是MS VC编译器则是这样的结果:
void CaaaDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString str1;
double aaa=202.2;
double bbb=200;
str1.Format("%lf",aaa-bbb);
MessageBox(str1);
}
得出2.200000,也多了5个0,但还好,没误差
今天新版本,请使用!
bug正在改,但这些天已改改了很多了!
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————