Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2449|回复: 7

[已解决]单元格公式中36348.4200000001 最后的1怎么给自动剩掉了?

[复制链接]
发表于 2015-8-13 18:28 | 显示全部楼层 |阅读模式
本帖最后由 jessylake 于 2015-8-13 18:30 编辑

单元格里:
=3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449
结果是:-177505.175
可用计算器算结果是:-177505.1749999999   单元格格式是常规,显示出来的也是-177505.175,我怎么让它按实际的显示?
如果这样显示的话,保留两位小数就是-177505.18,而用实际上的得数,保留两位小数应该是-177505.17,造成了误差




问题是我算的结果是:-177505.175,保留两位小数是:-177505.18
而人家算的结果是(和计算器计算的一样):-177505.1749999999   ,保留两位小数是:-177505.17

最终结果对不上,怎么办,而且是经常算,一对比,有时一样,有时多0.01,有时少0.01,感觉很别扭。
最佳答案
2015-8-14 11:44
本帖最后由 香川群子 于 2015-8-14 11:52 编辑

楼主不要钻牛角尖了好不好。

Excel单元格计算中,最大有效位数=15
而 36348.4200000001 正好是15位,此时最后的那个1可以保留。

但当你=3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449的计算结果为
-177505.1749999999 时,最后的9已经超过15位(是第16位了)

因为Excel只能保留15位有效数字,所以最后的9必须进位,
于是结果=-177505.175


…………
你可以试一下,如果是少1个0,即:
=3598642.104+36348.420000001+1573.99-17859.33-2581.91-3793628.449

则计算结果能够保留到最后:
=-177505.174999999

因为此时的有效位数正好是15位。
…………


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-8-13 19:12 | 显示全部楼层
你就当我是在灌水吧。
=INT(ABS(3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449)*100)*(0-(3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449<0))/100
我试了下,这样可以解决那个问题,就是太复杂了。呵呵。
回复

使用道具 举报

 楼主| 发表于 2015-8-13 19:27 | 显示全部楼层
心正意诚身修 发表于 2015-8-13 19:12
你就当我是在灌水吧。
=INT(ABS(3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449)*10 ...

看的我直晕,不知道什么道理,这样算是和用计算器算出来的结果一样吗,是不是里面的数据变化里,算出来的也能保证精度呢?
回复

使用道具 举报

发表于 2015-8-13 19:44 | 显示全部楼层
jessylake 发表于 2015-8-13 19:27
看的我直晕,不知道什么道理,这样算是和用计算器算出来的结果一样吗,是不是里面的数据变化里,算出来的 ...

就是把两位小数点以后的部分无条件的舍去。。
回复

使用道具 举报

 楼主| 发表于 2015-8-13 19:51 | 显示全部楼层
心正意诚身修 发表于 2015-8-13 19:44
就是把两位小数点以后的部分无条件的舍去。。

那用rounddown 就可以,问题是有的时候还是需要进上去的
回复

使用道具 举报

发表于 2015-8-13 19:58 | 显示全部楼层
jessylake 发表于 2015-8-13 19:51
那用rounddown 就可以,问题是有的时候还是需要进上去的

反正这会也无聊。不如多举几个例子。想要什么样的结果,讨论讨论。如果你也无聊的话。
回复

使用道具 举报

发表于 2015-8-14 11:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 香川群子 于 2015-8-14 11:52 编辑

楼主不要钻牛角尖了好不好。

Excel单元格计算中,最大有效位数=15
而 36348.4200000001 正好是15位,此时最后的那个1可以保留。

但当你=3598642.104+36348.4200000001+1573.99-17859.33-2581.91-3793628.449的计算结果为
-177505.1749999999 时,最后的9已经超过15位(是第16位了)

因为Excel只能保留15位有效数字,所以最后的9必须进位,
于是结果=-177505.175


…………
你可以试一下,如果是少1个0,即:
=3598642.104+36348.420000001+1573.99-17859.33-2581.91-3793628.449

则计算结果能够保留到最后:
=-177505.174999999

因为此时的有效位数正好是15位。
…………


评分

参与人数 2 +11 金币 +8 收起 理由
jessylake + 3 很给力!
爱疯 + 8 + 8 群子老师的讲解很清晰,学习

查看全部评分

回复

使用道具 举报

发表于 2015-8-14 11:54 | 显示全部楼层
另外,你的原始数据如果都按照保留15位小数(去除整数部分以后),
那么,由于浮点运算差异,也会和实际数值产生了误差。

Pic.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 03:36 , Processed in 0.358568 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表