可能重复: 浮点表示错误?
我对这段代码有问题
int cent;
int dollar ;
float cnt2dlr;
//convert cnt to doloar ;
cnt2dlr=(cnt)/(100);问题是当cnt = 175,cnt2dlr = 0.17,444444,而不是0.17,5
有什么帮助吗?
发布于 2012-11-07 16:53:25
浮点数不是精确的表示形式。它们是近似的,所以你不能保证很高的精度。读取关于浮点算法,每个计算机科学家应该知道什么?
要提高数字的精度,请考虑使用64位double而不是32位float。
发布于 2012-11-07 16:52:37
浮点数字往往不精确。你对此无能为力。
您的代码很好地说明了为什么不应该在涉及货币的计算中使用浮点数。仅仅因为货币值有小数点,而不是使货币成为浮点数。浮点数应该用于无穷小变化的量,如温度或速度,而不是象货币一样,以块状变化的量。
发布于 2012-11-07 17:08:11
我有点困惑。如果你指的是(分)而不是(cnt),那么
cnt2dlr=(cent)/(1000);(注意e在百分比中)是int / int除法,175 / 1000应该返回int 0。
如果你这样做,你会得到同样的结果吗?
cnt2dlr=(cent)/(1000.0);注意小数点。
https://stackoverflow.com/questions/13274372
复制相似问题