使用某些小数创建0.000 ..

1 java double digits

我正在尝试使用用户输入所需的"0"来创建数字0.00000 .... 我的代码有什么问题?

      int n;
      double dec = 0.0;

   in = new Scanner(System.in);
        n = in.nextInt();

    for (i = 1; i <= n; i++) 
                dec = dec / 10.0d;
Run Code Online (Sandbox Code Playgroud)

数字不会改变.

Jon*_*eet 9

您期望double保留小数位数 - 它不会这样做.该值始终标准化.该double类型是所有关于一个数,而不是一个特定的十进制表示的大小.它适用于自然数量 - 重量,高度等.

如果你关心十进制数字,那么BigDecimal对你来说是更合适的类型.这更适用于货币值,例如,确实存在指定为十进制表示的精确数量.

BigDecimal 确实保留了您使用的小数位数,但您需要注意确切的使用方式.你无疑会发现这种setScale方法很有用.

例如:

import java.math.BigDecimal;

class Test {
    public static void main(String[] args) throws Exception {
        BigDecimal x = new BigDecimal("0")
        System.out.println(x); // 0
        x = x.setScale(5);
        System.out.println(x); // 0.00000
    }
}
Run Code Online (Sandbox Code Playgroud)