Javascript C#奇怪的行为与#x2B;操作人员

Javascript C#奇怪的行为与#x2B;操作人员,javascript,c#,c++,Javascript,C#,C++,有人能告诉我为什么下面的语句计算为false吗 bool myBoolean = .6 + .3 + .1 == .1 + .3 + .6; // false 在JavaScript和C++中,同样的事情。NB。我回答这个问题,因为它也被标记为C++ 由于浮点表示错误,C++中的上述两个浮点数不是完全相等的,因此产生错误。 例如,0.1的内部表示接近该值,但不完全相同 C#也是如此 请允许我链接一个著名的文档,每个处理浮点运算的程序员都应该阅读:]永远不要相信浮点运算。在转换过程中,您可能会

有人能告诉我为什么下面的语句计算为false吗

bool myBoolean = .6 + .3 + .1 == .1 + .3 + .6; // false
在JavaScript和C++中,同样的事情。

NB。我回答这个问题,因为它也被标记为C++

由于浮点表示错误,C++中的上述两个浮点数不是完全相等的,因此产生错误。 例如,0.1的内部表示接近该值,但不完全相同

C#也是如此


请允许我链接一个著名的文档,每个处理浮点运算的程序员都应该阅读:

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


浮点算术?请注意,在任何算术之后测试浮点相等性通常是一个不好的主意,因为正确的类型
decimal
bool myBoolean=.6m+.3m+.1m==.1m+.3m+.6m从不信任浮点相等比较。您可以将示例简化为bool myBoolean=.1=.1@卡伦布拉德伯里:我无法复制你说的话<代码>布尔myBoolean=.1=.1为我返回true。这让人困惑,因为高投票率的重复问题也说明了这一点。