带+运算符的C#奇怪行为

时间:2015-04-22 08:16:30

标签: javascript c# c++

有人能告诉我为什么下面的语句评估为false?

bool myBoolean = .6 + .3 + .1 == .1 + .3 + .6; // false

它在Javascript和C ++中做同样的事情。

2 个答案:

答案 0 :(得分:7)

<子>铌。我正在回答这个问题,因为它也被标记为C ++

由于浮点表示错误,在C ++中上面的结果为false,因为两个浮点数不完全相等。

E.g。 0.1的内部表示接近该值,但不完全是

enter image description here

同样适用于C#。

请允许我链接一个着名的文档(imho)每个处理浮点运算的程序员应该阅读:What Every Computer Scientist Should Know About Floating-Point Arithmetic

答案 1 :(得分:0)

]永远不要相信Floating-Point Arithmetic。在转换过程中,您可能会失去精度。这就是为什么结果是错误的。我建议你尝试使用以十进制表示法存储数字的十进制类型。因此,您的数字可以准确表示。

enter image description here