如何将字符串解析为文字双精度值?我有一组使用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
,则抛出异常。
答案 0 :(得分:4)
双打只有64位长。有无穷无尽的实数。因此,不可能将每个真实表示为64位双精度。因此,使用双打将始终导致近似结果。如果您需要绝对精度,请使用BigDecimal。
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个:
DecimalFormat df =(DecimalFormat)NumberFormat.getInstance();
df.setParseBigDecimal(true);
BigDecimal bd = (BigDecimal) df.parse(probabilityString);