将 python 浮点数打印为单精度浮点数
Posted
技术标签:
【中文标题】将 python 浮点数打印为单精度浮点数【英文标题】:Print python float as single precision float 【发布时间】:2014-08-12 19:56:29 【问题描述】:当像这样在 Python 3 中打印浮点变量时:
str(1318516946165810000000000.123123123)
输出是:
1.31851694616581e+24
标准库(不是 Numpy)中是否有一种简单的方法可以仅以 32 位浮点精度打印相同的内容? (或更一般的任何精度)
注意精度!= 位置,例如十进制
编辑
结果应该是类似 str 的字符串,但精度有限,例如: 上述浮点数的 32 位表示:
1.31851e+24
【问题讨论】:
你的意思是你想截断浮点数的十进制表示,这样它就不会给人一种准确的错误印象? 是的,在确保结果表示有效的 32 位浮点数(或任何位精度,如 24 位)的同时,目标是一个字符串,而不是实际的 python 浮点数。我希望有另一种方法,而不是再次手动解析字符串并确保上述限制 所以你想要一个可以将浮点数转换为字符串并返回的无损函数?它必须是人类可读的吗? 我将编辑问题以澄清 -完成(填充文本以使评论长度足够长) 【参考方案1】:我可能误解了,但是您使用的是 format
和合适的精度修饰符吗?
>>> "0:6g".format(1.31851694616581e24)
'1.31852e+24'
更改6
控制有效数字的个数
【讨论】:
'g' 将数字四舍五入到 x 位有效数字(不是位),不保证 32 位浮点数的有效表示,有关详细信息,请参阅docs.python.org/3/library/…,可能发生的情况是浮点数将具有比 x 位浮点数允许的更高或更低的 6 位值,格式字符串修饰符都不查找位长度 好的,感谢您的澄清,抱歉我的回答对您没有太大帮助。 但是它可以在我的用例中使用,当不需要进一步验证并且可以忽略小的精度损失时,接受“足够接近”,因为标准中似乎没有明智的单行库以上是关于将 python 浮点数打印为单精度浮点数的主要内容,如果未能解决你的问题,请参考以下文章