二进制浮点(IEEE 754)如何转换为十进制(即字符串)?

问题描述 投票:0回答:1

这可能是一个非常愚蠢的问题,但是我一直在搜索一整天,但无法得到答案...

假设我有一个双精度浮点文字:5.21。在Java中调用Double.toString( 5.21 )会产生字符串"5.21"

[现在,假设我们有Java,但是没有toStringvalueOf,也不能使用String.format或仅通过连接对其进行格式化。假设我只有二进制表示形式,我如何将我的数字转换为字符串?

更具体地说,Double.toStringdtoa是如何工作的:我如何编写自己的toString / dtoa函数(假设我们正在处理IEEE 754双精度浮点数?)]]

这可能是一个非常愚蠢的问题,但是我一直在搜索一整天,但没有得到答案。假设我有一个双精度浮点字面量:5.21。调用Double ....

floating-point precision tostring ieee-754
1个回答
2
投票

这是一个令人难以置信的棘手问题,尤其是要有效而准确地解决它。但是你很幸运。这也是一个很好研究的问题。 Burger和Dyvbig的论文是标准参考文献:https://www.cs.indiana.edu/~dyb/pubs/FP-Printing-PLDI96.pdf

© www.soinside.com 2019 - 2024. All rights reserved.