将 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 浮点数打印为单精度浮点数的主要内容,如果未能解决你的问题,请参考以下文章

Abplc浮点数怎么传给4个字节

C++如何用cout控制浮点数输出的位数?

IEEE754表示浮点数

第04部分:浮点数类型

什么是浮点数格式?

怎么将4字节16进制转化成浮点数