维权声明:本文为v2963297原创作品,本作者与仪器信息网是该作品合法使用者,该作品暂不对外授权转载。其他任何网站、组织、单位或个人等将该作品在本站以外的任何媒体任何形式出现均属侵权违法行为,我们将追究法律责任。
Excel的四舍五入公式之小于1的小数该怎么办
事件缘由是看见了此文 一起研究学习Excel的四舍六入五成双的公式 https://bbs.instrument.com.cn/topic/8271343_1_1_2_1_1,楼主在文中说到公式有问题,不能准确识别小数点后的数字。正好我对excel有些兴趣,就想研究一下。
公式的主要问题还是不能自动识别应该从哪位数字开始做取舍。比如0.123,0.0234,0.00345,0.000456,这样一组数字,若要保留两位有效数字,取舍位应该分别为小数点后第3,4,5,6位。因此我的想法是先找出小数点后第一个不为0的数字。网上搜索后,大多都是从一列数据中查找第一个不为0的数字。此时想到了写公式可以用AI啊,先试试文心一言。以下是我的提问,如图1,图2
![]()
图1
![]()
图2
文心一言的回答看似很有道理的,还解释了公式的用法,可是我尝试后,完全不可行。
既然问它返回小数第一个不为0的数字位置,它搞不懂。那就把小数转换为整数,继续问它。如图3
![]()
图3
这个就更不对了,它回答的是取整,不适用于<1的小数。文心一言还是没听懂人话。
又想起讯飞还有个星火,问问它吧。问答如图4,图5,图6
![]()
图4
![]()
图5
![]()
图6
变换了三种方式,它的回答也都不适用。看来它们还搞不懂我问的啥。那就还是问问人吧,在excelhome论坛中,提问后很快有了答复,如图7,图8
![]()
图7![]()
图8
两个回答都可以将<1的小数转换为整数。而且方法完全不同。图7是文本替换,将小数点前的0和小数点替换删除,然后去掉多余的0。图8更巧妙,用的小学数学知识,一共多少位就乘多大倍数。既然小数转换成了整数,那就好办了。
如图9
![]()
图9
A列是我的源数据,B列是转换为整数,C列是源数据和整数之间的字符长度差异,D列则是四舍五入了,此处是以3位有效数字为例。第二行为公式。我的思路是有了两个数据之间的长度差,那就可以得到小数点后有多少个”0”了,那也就可以得知小数点后第一个不为0的数字的位置,也就可以方便的定位需要做取舍的长度。
至于大于1的数字,用if函数来判断,大于1的数字直接round即可。