【发布时间】:2016-04-13 23:56:19
【问题描述】:
在使用浮点精度时,我偶然发现了一个奇怪的事实。为什么 python 在使用"%.f" 格式化时只打印整数部分。我愿意知道这背后的机制
>>> a = float(2.12345)
>>> a
2.12345
>>> print "%.2f" % a
2.12
>>> print "%.1f" % a
2.1
>>> print "%f" % a
2.123450
>>> print "%.f" % a
2 #why?
提前感谢您的解释:)
【问题讨论】:
-
因为
"%.f"和"%.0f"一样? -
出于同样的原因
1.0可能与1.相同。 -
这似乎是未定义的行为。可选精度为given as a
'.'(dot) followed by the precision。 format specification mini-language documentation 同样需要一个精度参数。由于int()返回 0,这似乎是一个合理的默认值,但未定义的行为正是如此。
标签: python floating-point