如何设置两个零的Java双小数。

时间:2014-07-10 12:18:38

标签: java

这是我的代码

import java.text.DecimalFormat;
import java.text.ParseException;

public class TestJava {

    public static void main(String[] args) throws ParseException {
        DecimalFormat df = new DecimalFormat("#.00");
        String value = df.format(250.0);
        System.out.println(Double.parseDouble(value));
    }
}

输出:250.0
我需要它250.00 [不需要字符串..双模式的答案]

请帮我解决这个问题

谢谢

4 个答案:

答案 0 :(得分:2)

您将实数的常规十进制表示(如您在小学教过的)与计算机浮点类型(例如double)的表示混淆。它们是不同的,它们的工作方式不同。

在后一种情况下,250.0只有一个表示为double。这是二进制版本向我们显示的精确数字:

01000000 01101111 01000000 00000000
00000000 00000000 00000000 00000000

将字符串"250.0""250.00"转换为double时,您将获得完全相同的值。


从数学的角度来看,你似乎尝试来模拟数字的精确度;即,您希望"250.0"表示249.5000 ...至250.49999 ...,"250.00"表示249.95000 ...至250.049999 ....

您可以使用double对测量(或其他)的精度进行建模,但您需要使用一对数字来完成。

答案 1 :(得分:0)

类型double只保存数值 - 它不包含有关数字格式的任何信息。价值" 250"与值" 250.0"相同或" 250.00" - 您无法在double变量中存储格式信息,例如小数点后应打印多少个零。

如果您需要保存此信息,则需要将值保留为字符串,或者找到不同的解决方案。

答案 2 :(得分:0)

试试这个

public static void main(String[] args) {
        Double i = 250.0;
        System.out.format("Result is %.2f", i);
    }

输出

250.00

答案 3 :(得分:0)

public static void main(String[] args) {
    Double i = 250.0;
    System.out.format("Result is %.2f", i);
}

上述方法不起作用; System.out.format()接受一个String和一个Object []而不是String,Double。