2 fennermi fennermi 于 2015.06.02 14:21 提问

C#特殊的两个double类型变量相加问题

今天在两个double型变量求和时发现一个很奇怪的问题。问题如下:
0.35+0.32=0.66999999999999993
系统环境:32位XP
开发环境:vs2010
调试时用 “即时窗口”运算也会出现这个问题。
类似的还有
0.35+0.31=0.65999999999999992
0.25+0.21=0.45999999999999996
想明白其中的原理,或者这是个编译器的bug?望大神指教

3个回答

guwei4037
guwei4037   Ds   Rxr 2015.06.02 14:25
已采纳
fennermi
fennermi 回复guwei4037: 问题已解决,感谢大神!!
2 年多之前 回复
guwei4037
guwei4037 类似的还有BigInteger
2 年多之前 回复
u012216727
u012216727   Ds   Rxr 2015.06.02 14:24

这个好像是某个特殊的数数学运算后, 编辑器自动获取到的这个数;如果你想要获取到原数,也就是0.35+0.31=0.66的样子你最好用BigInteger类似的大类型
的类来处理。

fennermi
fennermi 感谢BigInteger的建议
2 年多之前 回复
91program
91program   Ds   Rxr 2015.06.02 14:38

这就是精度的问题,double 在大多数平台上都有,这不是 Bug。
所以,如在做 double 和 float 和 零比较时, 不能直接使用等于零,而是要使用小于某个范围,如 0.000001 后就认为是零。

fennermi
fennermi 感谢您的回答!!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片