【问题标题】:Print python float as single precision float将 python 浮点数打印为单精度浮点数
【发布时间】:2014-08-12 19:56:29
【问题描述】:

当像这样在 Python 3 中打印浮点变量时:

str(1318516946165810000000000.123123123)

输出是:

1.31851694616581e+24

标准库(不是 Numpy)中是否有一种简单的方法可以仅以 32 位浮点精度打印相同的内容? (或更一般的任何精度)

注意精度!= 位置,例如十进制

编辑

结果应该是类似 str 的字符串,但精度有限,例如: 上述浮点数的 32 位表示:

1.31851e+24

【问题讨论】:

  • 你的意思是你想截断浮点数的十进制表示,这样它就不会给人一种准确的错误印象?
  • 是的,在确保结果表示有效的 32 位浮点数(或任何位精度,如 24 位)的同时,目标是一个字符串,而不是实际的 python 浮点数。我希望有另一种方法,而不是再次手动解析字符串并确保上述限制
  • 所以你想要一个可以将浮点数转换为字符串并返回的无损函数?它必须是人类可读的吗?
  • 我将编辑问题以澄清
  • -完成(填充文本以使评论长度足够长)

标签: python python-3.x


【解决方案1】:

我可能误解了,但是您使用的是 format 和合适的精度修饰符吗?

>>> "{0:6g}".format(1.31851694616581e24)
'1.31852e+24'

更改6控制有效数字的个数

【讨论】:

  • 'g' 将数字四舍五入到 x 位有效数字(不是位),不保证 32 位浮点数的有效表示,有关详细信息,请参阅docs.python.org/3/library/…,可能发生的情况是浮点数将具有比 x 位浮点数允许的更高或更低的 6 位值,格式字符串修饰符都不查找位长度
  • 好的,感谢您的澄清,抱歉我的回答对您没有太大帮助。
  • 但是它可以在我的用例中使用,当不需要进一步验证并且可以忽略小的精度损失时,接受“足够接近”,因为标准中似乎没有明智的单行库
猜你喜欢
  • 1970-01-01
  • 2020-02-03
  • 2015-02-02
  • 2012-06-09
  • 2021-07-25
  • 2011-11-17
  • 2016-09-02
  • 2020-08-04
相关资源
最近更新 更多