Excel正在使数字不一致,导致我出现问题。使用ROUND()时,有时会向上舍入特定数字,而在其他时候,它会向下舍入相同的值。
我已经尝试设置Excel以在设置中显示确切的值,但它不会改变任何东西。
这是正在发生的事情的一个例子。
这是简单的公式ROUND((A1-B1)/ 2,4)
对于一条记录,我有值(.3159 - .3152),其值为.0007,然后除以2得到.00035。
对于下一个记录,我有值(.3554 - .3547),它也计算为.0007并除以2得到.00035
所以,即使两个值都是.00035,当我四舍五入到小数点后4位时,我得到的是.0003和另一个.0004。相同的数字,四舍五入到相同数量的地方,两个不同的结果。我怎样才能解决这个问题?
这是一个浮点数的问题,它是固有的,无法解决,只能避免。
在Excel中尝试这些测试:
=(0,3159-0,3152)=(0,3554-0,3547)
给你FALSE
。
=(0,3159-0,3152)-(0,3554-0,3547)
给你一些像5.55112E-17
。
如果你不能接受这些差异,你应该在计算过程中进行舍入,而不仅仅是在结束时:
=ROUND(0.3159-0.3152,4)=ROUND(0.3554-0.3547,4)
是TRUE
=ROUND(0.3159-0.3152,4)-ROUND(0.3554-0.3547,4)
是0
进一步阅读:Is floating point arithmetic stable?和Binary floating point and .NET,备受好评的Jon Skeet。