将字符串转换为双精度值 - Java
将带逗号的字符串编号(例如:835,111.2)转换为 Double 实例的最简单、正确的方法是什么?
谢谢。
将带逗号的字符串编号(例如:835,111.2)转换为 Double 实例的最简单、正确的方法是什么?
谢谢。
看看java.text.NumberFormat
。例如:
import java.text.*;
import java.util.*;
public class Test
{
// Just for the sake of a simple test program!
public static void main(String[] args) throws Exception
{
NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("835,111.2");
System.out.println(number); // or use number.doubleValue()
}
}
但是,根据您使用的数量类型,您可能希望解析为 a。最简单的方法可能是:BigDecimal
BigDecimal value = new BigDecimal(str.replace(",", ""));
或将 DecimalFormat
与 :setParseBigDecimal(true)
DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(Locale.US);
format.setParseBigDecimal(true);
BigDecimal number = (BigDecimal) format.parse("835,111.2");
最简单的并不总是最正确的。这是最简单的:
String s = "835,111.2";
// NumberFormatException possible.
Double d = Double.parseDouble(s.replaceAll(",",""));
自从您明确表示要替换逗号以来,我没有打扰过区域设置,所以我假设您已经将自己确定为具有逗号的区域设置,逗号是千位分隔符,句点是小数分隔符。如果你想要正确的(在国际化方面)行为,这里有更好的答案。