how to change 39.54484700000000 to 39.54 and using python
Possible Duplicate:
python limiting floats to two decimal points
我想使用python将
如何得到它,
谢谢
如果要更改实际值,请按照eli的建议使用
1 2 | >>> print"%.2f" % (39.54484700000000) 39.54 |
或者在更新版本的python中
1 2 | >>> print("{:.2f}".format(39.54484700000000)) 39.54 |
相关文档:字符串格式化操作,内置函数:round
如果使用的是十进制,则可以使用量化方法:
1 2 3 4 5 6 | In [24]: q = Decimal('0.00') In [25]: d = Decimal("115.79341800000000") In [26]: d.quantize(q) Out[26]: Decimal("115.79") |
埃多克斯1〔0〕怎么样
1 2 3 4 | >>> import decimal >>> d=decimal.Decimal("39.54484700000000") >>> round(d,2) 39.54 |
eli提到使用round函数——根据您的需求,您可能希望返回一个十进制对象。
1 2 3 4 5 | >>> from decimal import Decimal >>> float_val = 39.54484700000000 >>> decimal_val = Decimal("%.2f" % float_val) >>> print decimal_val 39.54 |
使用decimal对象可以指定要跟踪的精确小数位数,因此避免以表示为
但是,您不能将浮点直接转换为小数(浮点不精确,而python无法猜测您希望如何对其进行舍入),因此我几乎总是先将其转换为一个舍入字符串表示法(即
1 2 | >>> round(39.54484700000000, 2) 39.54 |
但是,请注意,结果实际上不是39.54,而是39.53999999994734871708787977695465087890625。
使用
Return the floating point value x
rounded to n digits after the decimal
point. If n is omitted, it defaults to
zero. The result is a floating point
number.
Values are rounded to the closest
multiple of 10 to the power minus n;
if two multiples are equally close,
rounding is done away from 0
1 2 3 | >>> round(39.544847, 2) 39.539999999999999 >>> |
请注意,由于39.54在我的PC(x86)上不完全可重复使用浮点,因此结果是epsilon关闭。但这没什么区别(这是一个完全不同的问题,有很多这样的问题和答案)。如果将其正确转换为字符串,您将看到所期望的:
1 2 | >>>"%.2f" % round(39.544847, 2) '39.54' |