首页 > 解决方案 > 在不丢失精度的情况下将浮点数转换为字符串 - Java

问题描述

我想将浮点数转换为字符串而不丢失其精度。

当我将40075016.68557849转换为字符串时,它被表示为4.0075016E7

我需要让它与输入的值完全相同,即“ 40075016.68557849 ”。

我试过 String.valueOf(), Float(40075016.68557849f).toString() 但没有任何东西以正确的方式工作。

标签: java

解决方案


BigDecimal

如果您需要精确地维护小数,则不能使用浮点类型float/Floatdouble/ Double。浮点技术牺牲了执行速度的准确性。他们可以容纳的数字大小也有限制。

而是使用BigDecimal. 慢得多但准确。

new BigDecimal( "40075016.68557849" ) 

推荐阅读