xe10 64位程序的运算问题

东风 2017-10-31 10:44:14
xe10 可以跨平台,32位和64位计算怎么不一样呢
xe10 生成的32位程序运算
edit3.Text:=FloatToStr(StrToFloat(edit1.Text)-strtofloat(edit2.text));
如果
edit1.text:=10.2;
edit2.text:=10;
计算出edit3为0.2
=============
xe10 生成的64位程序运算
edit3.Text:=FloatToStr(StrToFloat(edit1.Text)-strtofloat(edit2.text));
如果
edit1.text:=10.2;
edit2.text:=10;
计算出edit3为0.199999999999999
必须用roundto才行 edit3.Text:=FloatToStr(roundto((StrToFloat(edit1.Text)-strtofloat(edit2.text)),-2));
为什么必须加个裤衩呢
...全文
329 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
东风 2017-11-04
  • 打赏
  • 举报
回复
感谢答复,delphi的同仁越来越少了
liups 2017-11-01
  • 打赏
  • 举报
回复
浮点数就是这样的情况,正常
lyhoo163 2017-11-01
  • 打赏
  • 举报
回复
数制类型不一样,精度不一样,当然值就不一样了。
  • 打赏
  • 举报
回复
Delphi 32位编译器浮点运算默认精度是80位extended,64位编译器的浮点运算默认精度是64位double,运算精度低一些。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧