试过如下
String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);
Run Code Online (Sandbox Code Playgroud)
输出:12.0
但我希望得到12.00精度
请不要在字符串类中使用format()方法让我知道正确的方法
您的问题不是精度损失,而是数字的输出格式及其小数位数.您可以DecimalFormat用来解决您的问题.
DecimalFormat formatter = new DecimalFormat("#0.00");
String d = new String("12.00");
Double dble = new Double(d.valueOf(d));
System.out.println(formatter.format(dble));
Run Code Online (Sandbox Code Playgroud)
我还要补充一点,您可以使用它DecimalFormatSymbols来选择要使用的小数分隔符.例如,一点:
DecimalFormatSymbols separator = new DecimalFormatSymbols();
separator.setDecimalSeparator('.');
Run Code Online (Sandbox Code Playgroud)
然后,在宣布你的时候DecimalFormat:
DecimalFormat formatter = new DecimalFormat("#0.00", separator);
Run Code Online (Sandbox Code Playgroud)
使用BigDecimal而不是双倍:
String d = "12.00"; // No need for `new String("12.00")` here
BigDecimal decimal = new BigDecimal(d);
Run Code Online (Sandbox Code Playgroud)
这样做是因为BigDecimal保持了"精度",并且BigDecimal(String)构造函数从数字的右边开始设置.,并使用它toString.因此,如果您将其丢弃System.out.println(decimal);,则打印出来12.00.
| 归档时间: |
|
| 查看次数: |
12221 次 |
| 最近记录: |