在Java中使用可变精度(非舍入)打印double

时间:2015-09-02 14:33:40

标签: java precision

我希望将双精度打印到变量精度,但不进行舍入。例如:

    Scanner input = new Scanner(System.in);
    double num;
    System.out.println("Enter a double:");
    num = input.nextDouble();
    int precision;
    System.out.println("Enter precision:");
    precision = input.nextInt();

现在我想将num打印到精度的小数位。有没有一种简单的方法来打印它?

编辑: 我还没有看到关于如何使用变量值的另一个问题。 DecimalFormat选项对数字进行舍入,这是我不想要的。理想情况下,我正在寻找一种方法来使用变量:

    "%.nf"

而不是

    "%.3f"

1 个答案:

答案 0 :(得分:1)

使用"%.nf"作为格式化字符串,其中n被小数位数替换。

示例:

System.out.printf("%.1f, %.2f\n", 1.234d, 1.234d);
// 1.2, 1.23

请参阅the Javadoc

要在其中插入变量,只需执行"%." + intValue + "f"