gpt4 book ai didi

python - "%11f"Python 中的符号打印太多数字

转载 作者:太空狗 更新时间:2023-10-29 23:57:17 26 4
gpt4 key购买 nike

在 Python 中,我试图将 float 转换为字符串,使字符串恰好有 12 个字符长:第一个字符是空格,其余字符可以用数字填充(如果需要,还可以用小数点)要转换为字符串的数字。此外,数字需要以十进制形式表示(没有科学计数法)。我在特定文件的固定格式内工作;因此,上述确切参数。可以假设我正在处理的所有数字都小于 1e12,即所有数字都可以用

表示

我正在使用

s = " %11f" % number

大多数 float 转换为适合我的格式化参数的字符串;但是,一些较大的数字不会。例如,

print " %11f" % 325918.166005444

给出 325918.166005。这需要 13 个字符,而不是 11 个。

为什么我的代码会这样,我该如何解决?我想保持尽可能高的精度(即,简单地截断数字的小数部分并不是一个足够好的解决方案)。

如果 Python 版本很重要,我使用的是 2.7。

最佳答案

您没有指定精度,因此使用 float 的默认精度 6。您需要宽度和精度才能获得精确(双关语不是故意的)输出。

另请注意:

width is a decimal integer defining the minimum field width. If not specified, then the field width will be determined by the content.

所以这里的精度更多地决定了字符串的整体宽度。

您可以应用新样式格式来通过指定宽度和精度来获得更多控制:

>>> num = 325918.166005444
>>> w = 11
>>> " {:{w}.{p}f}".format(num, w=w, p=len(repr(num))-w-1) # subtract 1 for the dot
' 325918.1660'

然而,这假定您的 float 始终大于宽度,否则,您可以先在小数点后用尾随零填充 float 。

关于python - "%11f"Python 中的符号打印太多数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44790010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com