gpt4 book ai didi

单精度 IEEE 754 float 的格式

转载 作者:行者123 更新时间:2023-12-04 06:44:54 27 4
gpt4 key购买 nike

我需要以一种不会丢失任何信息的方式将单精度数字表示为文本(这样我就可以得到相同的数字,可能会忽略 NaN 等),但没有太多的伪数字 - 所以单精度 0.1 出来了“0.1”不是“0.100000001490116”。

我不是要节省字节,这些额外的数字只是令人困惑。

有没有一种简单的方法可以做到这一点?我可以看到至少需要 8 个有效的十进制数字来表示 23+1 位(12345678.0 和 12345679.0 在单精度上是不同的),并且使用二进制指数(12345b-11 类型的符号)就足够了,但这是否保证是足够的十进制指数符号 ( 1.2345e+6 ) 或使用 0-padding ( 0.0000123456 - 通常更具可读性,这些零不会打扰我)?

非常感谢任何 printf 格式或确切说明。

最佳答案

正确地做到这一点是一项非常重要的任务:问题是多篇学术论文的主题。

许多开源项目使用 David M. Gay 的 dtoa.c图书馆为此。如果你使用Python,最近(2.7/3)发布了基于dtoa.c的四舍五入,相关任务讨论的讨论非常值得:

  • Issue 1580: Use shorter float repr when possible

  • 如果你想知道(很多)更多:
  • Mike Cowlishaw 的 Bibliography on Decimal Arithmetic: Conversions
  • David M. Gay 描述 dtoa.c 的论文,Correctly Rounded Binary-Decimal and Decimal-Binary Conversions
  • 关于单精度 IEEE 754 float 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844861/

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