java从字符串解析double值作为文字值

时间:2012-06-07 08:13:28

标签: java

如何将字符串解析为文字双精度值?我有一组使用Double.valueOf(probabilityString)解析的概率值,需要与1.0d完全相加。

例如,当概率字符串为0.999999...时,得到的双值的总和为0.2, 0.5, 0.2, 0.1

我想要的是将双值解析为0.2d, 0.5d, 0.2d, 0.1d,这可能吗?

我正在处理一个接受double[]作为参数的第三方库,如果double值不能精确地汇总到1.0d,则抛出异常。

3 个答案:

答案 0 :(得分:4)

双打只有64位长。有无穷无尽的实数。因此,不可能将每个真实表示为64位双精度。因此,使用双打将始终导致近似结果。如果您需要绝对精度,请使用BigDecimal。

答案 1 :(得分:0)

使用Java中提供的BigDecimal

请参阅this link,它一定会对您有帮助。

如果您有任何问题,请与我们联系。

答案 2 :(得分:0)

试试这个:

DecimalFormat df =(DecimalFormat)NumberFormat.getInstance(); 
df.setParseBigDecimal(true); 
BigDecimal bd = (BigDecimal) df.parse(probabilityString);