3

longのIEEE754表現を含む64ビットがありdoubleます。標準のJavaと同じように文字列に変換したいと思いますDouble.toString(d)Doubleただし、バグがあるため、クラスのメソッドは使用できません。(内部で使用するため、どちらも機能String.valueOf(d)しません。精度が低下するため、機能しません。)したがって、変換を行う純粋なJavaコードが必要です。"" + dDouble.toString(d)NumberFormat

そのようなコードはどこにありますか?GNU Classpathのソースコードを試しましたが、この変換にはネイティブメソッドを使用しています。

4

1 に答える 1

5

少し検索したところ、dtoa.javaであることがわかりました。複雑に見えますが、コードはGPLライセンス(またはMozilla Public License 1.1ライセンス)の下にあります。

お役に立てば幸いです。

(私はあなたが参照しているバグさえ見つけました。)

編集:

[Andrew Thompson]は正しいです、あなたはしばしば(常に?)浮動小数点で精度を失います。ここで指摘したように、あなたは使用したいかもしれませんBigDecimal

于 2012-08-01T23:30:35.290 に答える