将double数乘1000后,怎么少了1。

willcheng 2005-07-06 03:03:08
double a = 47.4;

int b = a * 1000;

在个别机器上发现
b == 47399

怎么回事?
...全文
264 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dididadayi 2005-07-07
  • 打赏
  • 举报
回复
因为a=47.399啊
hanlin2004 2005-07-07
  • 打赏
  • 举报
回复
浮点数不准确
willcheng 2005-07-07
  • 打赏
  • 举报
回复
为什么是47.399?

Kshape 2005-07-06
  • 打赏
  • 举报
回复
哈哈
这个回复好
因为a=47.399啊
-----------------------
你定义的是double
flexitime 2005-07-06
  • 打赏
  • 举报
回复
你写的是什么程序啊!!C 还是 Delphi?
不过
无论 C 或是 Delphi 都会有浮点问题。一般来说,对于大部份的浮点数,在PC机中是不能精确地表示出来的。你可以看看 《Computer Systems A Programmer's Perspective》《深入理解计算机系统》,这本书说得十分清楚
何鲁青 2005-07-06
  • 打赏
  • 举报
回复
你用的是C的语法,在Delphi中
int b = a * 1000;
这句话
b:=a*1000;
编译就会报错的,你不可能把一个double类型的数据赋值给一个整形数
merkey2002 2005-07-06
  • 打赏
  • 举报
回复
在delphi里,这样是不能通过编译,
改成这样才行。
b:=round(a*1000);
Eastunfail 2005-07-06
  • 打赏
  • 举报
回复
因为a=47.399啊

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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