如何使用“n”格式修复精度

2023-12-22

我想使用逗号作为小数点分隔符来打印小数点。当我这样做时

import locale
locale.setlocale(locale.LC_ALL, 'nl_NL')

'{0:#.2n}'.format(1.1)

I get '1,1'。逗号在那里,但精度只有 1,而我将其设置为 2。怎么会?


请注意,此格式的构造如下:

  • #: "The '#'选项导致使用“替代形式”进行转换。 ...此外,对于'g' and 'G'转换时,尾随零不会从结果中删除。”
  • .2: 精确。
  • n:“数字。这与'g',不同之处在于它使用当前的区域设置来插入适当的数字分隔符。”

其中引用来自手册:格式规范迷你语言 https://docs.python.org/3/library/string.html#formatspec.


Using {.2f}正如评论中所建议的那样,也没有达到我想要的效果:'1.10'。精度是正确的,但区域设置中的逗号被忽略。


When n用于打印float,它的作用就像g, not f,但使用您的区域设置作为分隔符。还有文档 https://docs.python.org/2/library/string.html#format-specification-mini-language精度 说道:

The 精确是一个十进制数,指示格式化的浮点值的小数点后应显示多少位数字'f' and 'F', or 格式化浮点值的小数点之前和之后'g' or 'G'.

So .2n表示打印小数点前后总共 2 位数字。

我不认为有一个简单的方法可以获得f式精度与n语言环境的风格使用。您需要确定您的数字小数点前有多少位数字,加 2,然后将其用作格式中的精度。

precision = len(str(int(number))) + 2
fmt = '{0:#.' + str(precision) + 'n'
print(fmt.format(number))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用“n”格式修复精度 的相关文章

随机推荐