我不想解释啥是有效数字,不知道的麻烦百科一下,别告诉我调单元格格式
1234是4位有效数字
12.34是4位
0.1234是4位
0.01234是4位
0.12340是5位
123400是6位
根据你下面的答案,我最终研究出一个比较笨重的公式,仅供参考,假设数值是A1:
则完整的公式是:=LEFT(TEXT(A1,"0.000E+0"),5)*POWER(10,RIGHT(TEXT(A1,"0.000E+0"),2),
思路是先把源数字变成科学计数格式(这里面无法用单元格属性里面的科学计数格式实现,只能通过公式)。
然后在科学计数从最左侧开始取字符串,即LEFT函数,这里需要注意,小数点也算字符,所以在LEFT函数第二个数字(上述公式中的“5”)要比需要求出的有效数字(本题中为4)位数的值大1。
这样求出了合乎有效数字要求的字符串,然后通过RIGHT公式筛选出科学计数中的指数值。RIGHT公式与LEFT相反,是从右侧取字符串,在科学计数中,表示指数的为最后两位(不能忽略正负号),例如“3.285e-1”中的“-1”,所以公式中的“2”也是固定的。
最后再利用幂函数POWER与之前的有效字符串求出最终值,由于科学计数的底数是10,所以“10”是固定的。
由于公式直接使用源数字进行计算,所以比较麻烦,这里可以用TEXT公式先计算出科学计数的格式,例如为B2,然后再把B2代入公式中,则公式为:
=LEFT(B2,5)*POWER(10,RIGHT(B2,2)
亲测有效!
补充:我这个公式还是有问题,对于过大的数字就没办法实现,比如你例子中的123400,我做出的这个公式只适合我自己的应用,因为我是保留1为有效数字,后面都变成0。最佳答案还应该是科学计数的那个,因为数字过大时,有效数字就是使用科学计数格式。
大哥,2.2346那叫5位有效数字
你这个确实是实现我的要求了,不过结果里带E,我怕很多人看不懂啊,要是没有更好的,你就是最佳答案了
追答1、若要完全保证数据没有E是不可能,因为超过9999的数若要保留4位有效的话,肯定是要用科学计数法的,而计算机的科学计数法就是E,这个不是很多人看不看得懂的问题,由不得你任性!
2、若真要保持9999以下的数看起来正常,像是没有E的描述,你可以使用几个IF,把10以下、100以下的、1000以下和10000以下的作判别,再利用用ROUND之类的函数进行取舍和保留有效数,相信你应该懂的!会操作的吧