这个问题本质上有点错误。不仅在
0.200
和
0.2
之间没有实际区别,而且计算机并不以十进制格式存储数据,而是以二进制格式存储。(为了达到这个目的,电脑可能会将
0.2
存储为
0.20000000000000000000001
,只是因为精度问题,但由于二进制表示的限制,实际上无法在存储级别截断。)
如果你只想打印三个有效数字的值,可以使用:
print "%.3f" % float_var
如果您想将所有未来的计算结果保留三位小数,可以使用以下代码:
round(float_var,3)
但是就实际计算而言,这并没有什么可获得的好处。无论是使用Python、C、Java还是纸和笔,
0.200
对计算的影响与
0.2
相同。
编辑:如果您真的需要有效数字,则可以在列表中使用 Decimal 对象。文档
https://docs.python.org/2/library/decimal.html提供了一种将其从字符串快速转换为十进制数的方法。
data = map(Decimal, '1.34 1.87 3.45 2.35 1.00 0.03 9.25'.split())
如果您已经有一个浮点数数组,需要将其转换为三个有效数字,可以通过以下方式进行操作:
import decimal
def toDecimal(x):
return decimal.Decimal(str(x)).quantize(decimal.Decimal('1.000'))
data = map(toDecimal, float_var_list)
就计算有效数字的数量而言,我认为没有内置函数可以做到这一点,但是通过处理字符串,不会遇到太多麻烦就可以得出答案。
def numDigits(x):
splitDecimal = str(x).split(".")
return len(splitDecimal[1])