如何截断315.15321531321之类的输入 我想在百分之一的位置之后截断所有值,因此它变为315.15
我该怎么做?
答案 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 强>
享受!