如何使用python将浮点值转换为具有指定精度的另一个浮点值?
>>> a = 0.1
但实际上a的值是
0.10000000000000001
但是我需要在浮点类型中将a转换为0.1。
答案 0 :(得分:2)
由于内部存储数字的方式,使用0.1
类型时,无法使float
完全。 This offsite resources希望能够更轻松地解释内部结构。
请注意,当您使用Python控制台时,它可能看起来像是完全,但这不是真的,如下面的代码所示
In [35]: a = 0.1
In [36]: print(a)
0.1 # Looks fine! But wait, let's print with 30 decimal places...
In [37]: print('{:.30f}'.format(a))
0.100000000000000005551115123126 # Uh oh.
这是因为在控制台中打印时,只打印了一定数量的小数位,对于0.1这个数字是这样的,它开始偏离0的位置超出范围。
Python确实有一个Decimal
包可以提供对十进制数的支持,如下所示
import decimal
a = decimal.Decimal('0.1')
print(a)
# 0.1
print('{:.30f}'.format(a))
# 0.100000000000000000000000000000
请注意,我使用字符串Decimal
而不是float '0.1'
构造了0.1
对象。这是因为如果我使用了浮点数,那么Decimal
对象将包含与浮点数相同的“错误”。
答案 1 :(得分:0)
圆函数怎么样:Round
答案 2 :(得分:0)
您可以使用formate
函数和float round
函数
>>> a = float(format(0.10000000000000001, '.1f'))
>>> a
0.1
>>> round(0.10000000000000001,2)
0.1