printf不显示2位小数

时间:2017-09-29 06:36:25

标签: java

尝试打印带小数点后2位的值时收到错误。

我已经宣布了一个费率,并且我正在尝试按以下方式运行printf:

double rate = 2.50;
System.out.printf("Rate: %73.2d \n \n", rate);

但是我收到此消息:     旅行的部门:
    3     线程" main"中的例外情况java.util.IllegalFormatPrecisionException:2         at java.util.Formatter $ FormatSpecifier.checkInteger(Unknown Source)         at java.util.Formatter $ FormatSpecifier。(Unknown Source)         在java.util.Formatter.parse(未知来源)         at java.util.Formatter.format(Unknown Source)         在java.io.PrintStream.format(未知来源)         在java.io.PrintStream.printf(未知来源)         在example.main(example.java:74)

我也尝试过类似下面的浮动:

float rate = 2.50;
System.out.printf("Rate: %73.2f \n \n", rate);

非常感谢任何协助。

4 个答案:

答案 0 :(得分:1)

使用应该有用的%73.2f。这将打印您的数字2位小数。 d表示不是double的整数。

答案 1 :(得分:0)

感谢您的协助,我按照建议将其更改为.2f,并删除了双\ n。我去了:     System.out.printf(“Rate:%73.2f \ n”,rate);

答案 2 :(得分:0)

使用String Class进行格式化,使用println方法进行打印。

float rate=2.50f;
System.out.println(String.format("%73.2f", rate));

注意你写的一件事

float rate=2.50;//Compile Time Error

这一行生成编译时错误,因为2.50是double值,你不能存储在float中,所以也要纠正你的代码。

答案 3 :(得分:-1)

使用DecimalFormat

double rate = 2.50;
DecimalFormat df = new DecimalFormat("#.00");
System.out.printf("Rate: %s \n \n", df.format(rate));