打印float或double的N位小数

时间:2015-10-26 14:27:13

标签: java decimal-point

写这样的东西的最佳方法是什么:

Scanner input = new Scanner(System.in);
int n = input.nextInt();
double d = 5.123456789123456789;
System.out.printf("%.nf", d);

谢谢!

2 个答案:

答案 0 :(得分:2)

格式字符串只是您可以在运行时创建的String。 E.g。

System.out.printf("%." + n + "f", d);

答案 1 :(得分:0)

要保留double的小数位数,可以使用java DecimalFormat。

由于小数位数仅在运行时已知,因此您还需要在运行时生成DecimalFormat的模式。

所以:

    int n = 5; // or read in from user input
    String decimalFormatPattern = ".";
    for (int i =0 ; i < n; ++i) { // generate pattern at runtime
        decimalFormatPattern += "#";
    }
    // format pattern would be .#####
    DecimalFormat decimalFormat = new DecimalFormat(decimalFormatPattern);

    double d = 5.123456789123456789;
    System.out.println(decimalFormat.format(d));