Ter*_*aft 6 python floating-point
在使用float精度时,我偶然发现了一个奇怪的事实.为什么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?
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的解释:)
自从%1993 年添加格式以来,情况一直如此;如果 a.后面没有十进制数,则精度为零。
这没有记录,但与 一致printf,Python%格式的灵感来自于:
(可选)
.后跟整数 或*,或两者都不指定转换精度。在使用 when 的情况下*,精度由 int 类型的附加参数指定。如果该参数的值为负数,则会被忽略。如果既没有使用数字也没有*使用,则精度为零。
有趣的是,另一个未记录的功能也受到启发printf,您可以将其用作*精度,如上所述:
>>> "%6.*f" % (2, 1.234)
' 1.23'
Run Code Online (Sandbox Code Playgroud)