EXCEL中使用ROUND函数时发现结果有错误!求解?

F3是通过公式计算出来的,但你就是用计算器算8.275*9100,结果也是75302.5,只有1位小数,根本不存在隐含大量小数的问题!

这应该是浮点运算造成的,你点在前面一个单元格看看,这个数是小于75302.5的,可能只有75302.4999……这样子。

选择公式中的部分D3*E3,按F9,得到下图


果然是这样。


是这里形成的,所以说在计算过程中的数据要取有效位数,不要到最后一个数据才取。


追问

我的每一个单元格都是“常规”格式,没有做任何格式修饰,不存在显示误区

追答

这不是你哪里错了,是程序的问题,对于小数运算,计算机是将十进制数转为二进制数运算,再将运算结果从二进制转为十进制,转换过程中会存在误差,也称为浮点运算,这个是程序无法避免的,而整数运算不会有这种误差。WPS在这里没发现这个问题,并不是不存在这个问题,换些其它数据也会有的。
所以,如果有多级引用计算结果的公式,要在中间过程中的公式,对小数位数进行修约。

追问

阁下解释非常专业,谢谢。
但我这案例最多才三位小数,微软怎么能连这种程度的问题都搞不定啊?

追答

这不是微软的事,涉及到计算机的计算原理的事情。有时候我们看似简单的问题,但操作起来是非常难的。

追问

唉,那以后类似的问题会防不胜防,根本不知道哪里会出”意外“,睡觉都要不踏实了。

追答

没这么严重,设计公式时,养成一个良好习惯,对于有小数的运算,中间用ROUND函数来修约一下。怕影响结果,小数位可多取点。
其实按照标准,中间过程的数据,纯加减的,应该只比结果多一位小数;含乘除的,应该按最少位数来取的,但这点我们在平时是从来都不执行的,都是任由计算机去算。

追问

受教了,非常感谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-22

你点下F3单元格,看一下F3单元格在编辑栏中显示的数字是多少

 

 

 

那你两种表的E3单元格公式改成

=ROUND(D3*E3,)

这样试一下

追问

谢谢!
哪个单元格出错,就在哪个单元格上解决问题,最好不要殃及其它单元格

追答

那你两种表的G3单元格公式改成
=ROUND(D3*E3,)
这样试一下

本回答被网友采纳
第2个回答  2014-09-17
把F3的公式改成round(d3*e3,1) 就行了追问

的确有办法使结果正确,但就是不明白错误的原因是什么?
再说了,为什么用WPS就没有这些问题?
我也使用了多台电脑,多个版本的EXCEL来试验,结果都是错的!

追答

刚刚5055大神也说了。这是计算机浮点运算造成的误差。
具体原因及方法可以看这
http://support.microsoft.com/kb/214118/zh-cn

相似回答