クラスにBigDecimal
は、無損失の変換を保証するいくつかの便利なメソッドがあります。
byteValueExact()
shortValueExact()
intValueExact()
longValueExact()
しかし、方法floatValueExact()
およびdoubleValueExact()
存在しません。
メソッドfloatValue()
とのOpenJDKソースコードを読みましたdoubleValue()
。両方がそれぞれFloat.parseFloat()
とにフォールバックしているように見え、Double.parseDouble()
正または負の無限大を返す可能性があります。たとえば、10,000 9の文字列を解析すると、正の無限大が返されます。私が理解しているように、にBigDecimal
は無限の内部概念はありません。さらに、100件のように9Sの文字列を解析double
与える1.0E100
無限大ではなく、精度を失います。
合理的な実装floatValueExact()
とは何doubleValueExact()
ですか?
私が考えたdouble
組み合わせにより、溶液BigDecimal.doubleValue()
、BigDecial.toString()
、Double.parseDouble(String)
そしてDouble.toString(double)
、それは乱雑に見えます。もっと簡単な解決策があるかもしれないので、ここで質問したいと思います。
明確にするために、私は高性能ソリューションは必要ありません。