将浮点数转换为小数字符串
%f 和科学格式 %e。主要实现是用 C 语言编写的,最短的转换例程还被移植到了 Java 中。所有算法都已在经同行评审的出版物中发表。在本文撰写时,这些算法是已知的最快的浮点数到字符串转换算法。固定和科学转换例程的速度比 glibc、苹果的 libc、MSVC 等常用的 sprintf 实现快几倍。对于 16 位和 32 位 IEEE 浮点数,可以通过转换为 64 位并使用 64 位例程来实现科学和固定输出格式。请注意,目前尚无 128 位实现。在转换为最短时,请不要强制类型;最短转换是基于源类型的精度,强制转换为不同类型将无法返回预期的输出。此外,还有一些高度优化的 32 位和 64 位实现,以及一个通用的 128 位实现,可处理最多 128 位的任何 IEEE 格式。
| IEEE 类型 | 支持的输出格式 |
|---|---|
| 16 位 (半) | 最短 (通过 ryu_generic_128.h) |
| 32 位 (浮点) | 最短 |
| 64 位 (双精度) | 最短、科学、固定 |
| 80 位 (长双精度) | 最短 (通过 ryu_generic_128.h) |
| 128 位 (__float128) | 最短 (通过 ryu_generic_128.h) |
代码持续在 Ubuntu 18.04、MacOS High Sierra 和 Windows Server 1803 版本上进行测试。
第三方/ 目录外的所有代码均由 Ulf Adams 和贡献者拥有版权,可根据 Apache 2.0 许可证自由使用。或者, ryu/ 目录中的文件可根据 Boost 1.0 许可证自由使用。
暂无开放 Issues,或尚未同步最近议题。