是否有一种标准的C方式可以"完美地"打印浮点值a Dragon4?

Rus*_*lan 5 c floating-point floating-point-conversion

阅读这里是龙:你甚至不知道你遇到的问题的进展我已经注意到他们将新算法与glibc中使用的算法进行了比较printf:

Grisu3比GNU libc中printf使用的算法快约5倍

但与此同时,我没有找到任何格式说明符,printf它会自动找到要打印的最佳小数位数.所有我尝试过的都有一些奇怪的默认值,如小数点后的6位数,%f或点%g后的2 位或后点的6位%e.

我如何在文章中提到的glibc中实际使用该算法实现?在glibc中是否真的有这样的实现,甚至标准还是以任何方式讨论过它?

Pas*_*uoq 5

是真正的文章。博文指的是第 7 节中的结果(换句话说,“他们”没有比较博文中的任何内容,“他们”是从实际文章中反省信息,省略关键细节):

带有信息的结果表

Dragon4 或 Grisu3 的实现可以在指定这种“最小十进制数字”方式的现代编程语言的实现中找到(我建议你避免称之为“完美”)。Java 在某些情况下使用这种类型的十进制转换,Ruby 也是如此。C 不是指定“最小十进制数”转换为十进制的语言之一,因此编译器或 libc 没有理由为 Dragon4 或 Grisu3 提供实现。