我的应用程序需要执行一些操作:>,<,==,!=,+, - ,++等(但没有除法)。这些数字有时是整数,而更少有浮点数。什么时候双打开始失去精确度?
如果我在内部使用“double”类型(由IEEE 754定义),即使对于整数,直到我可以安全地使用它们,就好像它们是int
s一样,没有运行奇怪的舍入错误例如,n == 5 & & n == 6都是真的,因为他们四舍五入到相同的数字)?
很显然,各种操作(+, - 等)的第二个输入始终是一个整数,我知道在0.000 [...] 01之后我会从开始就遇到麻烦。
作为奖励答案,同样的问题,但为float
。
请选择“c#”或“C++”,因为“double”在这些语言之间执行的并不相同。 – Yuck 2012-02-13 16:32:28
在我脱落之前,我可以走多远到悬崖边缘?当你可以简单地把它们看作整数时,你为什么会冒任何整数的精度损失?什么是想要使用双重的理由? – 2012-02-13 16:33:12
我不认为有可能构建一个例子,在任何情况下'n == 5 && n == 6'都会评估为“true”。 – dasblinkenlight 2012-02-13 16:33:17