BigDecimalがfloatまたはdoubleに正確に変換できるかどうかを知る方法は?
クラスに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)、それは乱雑に見えます。もっと簡単な解決策があるかもしれないので、ここで質問したいと思います。 明確にするために、私は高性能ソリューションは必要ありません。