格式浮点到小数点后3位有效数字



如何将浮点数格式化为小数点后三位有效数字?如果浮点数没有小数位,则数字保持不变。

'{0:.3}'.format(0.000325658)
'0.000326'

这是不正确的:

'{0:.3}'.format(325256.023)
'3.25e+05'

和应该是

325256.023

325256.0应输出为325256.0

如果可能的话,我希望用一个''.format()来完成。

测试用例:

0.000325658 - > 0.000326
325256.023 - > 325256.023
325256.0 - > 325256.0 or 325256.000
编辑添加新的测试用例:
'{0:.3f}'.format(325256.000023)
'325256.000'

应该

325256.000023

如果您乐意包含numpy,那么您可以使用numpy。Format_float_positional函数,带有一个额外的步骤:

import numpy as np
def to_significant_decimals(n, amount):
integer = int(n)
n -= integer
return integer + float(np.format_float_positional(n, precision=amount, unique=False, fractional=False))
tests = [ 0.000325658, 325256.023, 325256.0, 325256.000023, 0, 7, 1000000, 1000.3, 1000.0001, 1234.4321 ]
for test in tests:
print(' ' + str(test) + ' =  ' + str(to_significant_decimals(test, 3)))
print(str(-test) + ' = ' + str(to_significant_decimals(-test, 3)))  

numpy函数允许您选择有效数字的数量,但这包括整数部分。我已经解决了这个问题,去掉整数部分,修改格式,然后再加上整数。可能有一个更优雅的解决方案,但这给出了您想要的结果。

输出:

0.000325658 =  0.000326
-0.000325658 = -0.000326
325256.023 =  325256.023
-325256.023 = -325256.023
325256.0 =  325256.0
-325256.0 = -325256.0
325256.000023 =  325256.000023
-325256.000023 = -325256.000023
0 =  0.0
0 =  0.0
7 =  7.0
-7 = -7.0
1000000 =  1000000.0
-1000000 = -1000000.0
1000.3 =  1000.3
-1000.3 = -1000.3
1000.0001 =  1000.0001
-1000.0001 = -1000.0001
1234.4321 =  1234.432
-1234.4321 = -1234.432

就像这样

'{0:.3f}'.format(325256.023)

相关内容

  • 没有找到相关文章

最新更新