问题描述
(INT)(33.46639 * 1000000)
收益 33466389
为什么会出现这种情况?
Why does this happen?
推荐答案
浮点运算是不完美的。 一下吧。
Floating point math isn't perfect. What every programmer should know about it.
浮点运算被认为是许多人一个深奥的主题。这是相当令人吃惊,因为浮点在计算机系统中无处不在。几乎每一种语言都有浮点数据类型;从个人电脑到超级计算机已经浮点加速器;大多数编译器将被要求编译浮点算法,不时;和几乎所有的操作系统必须对浮点异常反应,如溢出。本文对那些对计算机系统设计人员产生直接影响的浮点的那些方面的教程。它开始与浮点表示和舍入误差的背景下,与IEEE浮点标准的讨论仍在继续,并与计算机制造商如何更好地支持浮点的例子不胜枚举总结道。
...
压缩无穷多个实数成有限数目的比特的要求的近似表示。虽然有无穷多的整数,在大多数节目整数计算的结果可以存储在32位。相反,给定任何固定数目的位,大多数计算实数会产生无法使用的许多比特被精确表示的数量。因此浮点计算的结果必须经常以适应放回有限表示四舍五入。此舍入误差是浮点计算的特征。
Squeezing infinitely many real numbers into a finite number of bits requires an approximate representation. Although there are infinitely many integers, in most programs the result of integer computations can be stored in 32 bits. In contrast, given any fixed number of bits, most calculations with real numbers will produce quantities that cannot be exactly represented using that many bits. Therefore the result of a floating-point calculation must often be rounded in order to fit back into its finite representation. This rounding error is the characteristic feature of floating-point computation.
这篇关于为什么(INT)(33.46639 * 1000000)回报33466389?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!