Python 3.5.0十进制

时间:2015-10-31 20:14:15

标签: python python-3.x decimal

所以我需要在输出中删除一些小数的情况。

我有以下一行:

print ("O valor a pagar é de ", ***float(n3)*1.3***, " euros.")

在我高调的领域,我遇到了很多情况......输出就是这样的例子:2,47893698236923我希望它只显示2个小数的情况,例如:2,47。< / p>

我该怎么办?我正在使用python 3.5.0

3 个答案:

答案 0 :(得分:2)

正如BlivetWidget所指出的,浮动格式会导致舍入而不是截断。

您可以使用十进制模块:

from decimal import Decimal, ROUND_DOWN

x = 2.47893698236923
print(Decimal(str(x)).quantize(Decimal('.01'), rounding=ROUND_DOWN))
print(Decimal(str(x)).quantize(Decimal('.001'), rounding=ROUND_DOWN))

输出:

2.47
2.478

EDIT 正如Python docs所解释的那样:

  

quantize()方法将数字四舍五入为固定指数。这种方法   对于通常将结果舍入到a的货币应用程序非常有用   固定数量的地方

编辑2

另见Truncating floats in Python

答案 1 :(得分:-1)

使用A2功能。

round()

答案 2 :(得分:-1)

根据您提供的示例,您希望截断一个值(此时的其他答案将围绕该值)。如果你只想截断,我会使用一个字符串切片。

>>> num = 2.47893698236923
>>> str(num)[:str(num).find('.') + 3]
'2.47'

PS:如果你不知道那里是否会有小数,你可以使用这个变体:

>>> numstr = str(num)
>>> numstr[:(numstr.find('.') + 3) if numstr.find('.') else None]
'2.47'