数百后python截断?

时间:2009-06-09 00:29:59

标签: python truncate

如何截断315.15321531321之类的输入 我想在百分之一的位置之后截断所有值,因此它变为315.15

我该怎么做?

8 个答案:

答案 0 :(得分:13)

python 2.x下的字符串格式化应该为您完成:

>>> print '%.2f' % 315.15321531321
315.15

这将字符串表示限制为仅2个小数位。请注意,如果您使用round(315.153215, 2),您将最终得到另一个浮点值,这自然是不精确的(或过度精确,取决于您如何看待它):

>>> round(315.15321531321, 2)
315.14999999999998

从技术上讲,round()是正确的,但它不会按照您在315.15的请求“截断”结果。另外,如果你舍入像315.157这样的值,它会产生更接近315.16的东西...不确定这是你的意思“截断”。

答案 1 :(得分:7)

看起来打印“%。2f”也会进行舍入。 这是用于舍入和截断的Python代码

num = 315.15627
print "rounded   = %.2f" % num
print "truncated = %.2f" % (int(num*100)/float(100))

rounded   = 315.16
truncated = 315.15

答案 2 :(得分:6)

如果您正在使用货币金额,我强烈建议您改用Python的十进制类:http://docs.python.org/library/decimal.html

答案 3 :(得分:2)

如果您只想缩短显示,可以使用"%f"格式标记:

value = 315.123123123
print "Value is: %.2f" % value

如果您想真正切断“附加”数字,请执行以下操作:

from math import trunc
value = trunc(value*100)/100

答案 4 :(得分:1)

内置函数round()

>>> num = 315.1532153132
>>> round(num, 2)
3.1499999999999998

答案 5 :(得分:1)

你有几个选项 - 你可以使用round()对数字进行舍入,但是这可能会引入一些不准确性(315.15可能会舍入到315.150000003)。如果您只是想在显示浮动时截断浮点值,可以使用printf(“%。2f”,mynumber)指定输出的宽度。这可能是一个更好的解决方案,因为在不了解您的具体应用程序的情况下,一般来说,最好保留数字的整个长度以进行计算。

答案 6 :(得分:0)

使用Decimal类型和货币时,需要精确的金额,这就是我想出的截断到百分之一(百分之一):

amount = Decimal(long(amount * 100)) / Decimal(100)

一点历史:我尝试了quantize但它往往是圆形而不是截断。我不能凭良心使用昂贵的字符串格式化程序来完成这么简单的事情。最后我不想要任何精度问题la float所以我使用非常具体的铸造可能有点过分。

答案 7 :(得分:0)

也许这会对你有所帮助:

a=315.15321531321
a=a*100
a=int(a)
a=a/100.0
print(a)
315.15

说明:如果你想在小数点后第二位进行舍入,那么你应该: 1.将你的数字乘以100;这给你31515.321531321,
2.将这个新数字转换为整数; int(31515.321531321)给你31515,
3.除以100.0; 31515 / 100.0,
4.你得到了正确的答案;的 315.15

享受!