如何使用python将浮点值转换为具有某些指定进动的另一个浮点值?

时间:2014-11-20 09:42:12

标签: python

如何使用python将浮点值转换为具有指定精度的另一个浮点值?

>>> a = 0.1

但实际上a的值是

0.10000000000000001

但是我需要在浮点类型中将a转换为0.1。

3 个答案:

答案 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