使用Java时,小数位数太多了?

时间:2014-10-24 22:25:47

标签: java decimal rounding

我目前正在尝试将我的程序舍入到2位小数,但似乎无法执行。 这是我的代码:

double ounce;
double grams; 
grams = 0.00;
System.out.println("This programme will print a table that can be used to convert ounces to grams, from values 1-15.");
System.out.println("One ounce is equal to 28.35 grams.\n\nOunces \t\t\t Grams");

ounce = 0;
do {
  ounce++;
  grams+=28.35;
  System.out.println((""+ounce+"\t\t\t"+grams+""));
} while (ounce <15);

输出如下:

    Ounces           Grams
1.0                  28.35
2.0                  56.7
3.0                 85.05000000000001
4.0                  113.4
5.0                  141.75
6.0                  170.1
7.0                  198.45
8.0                  226.79999999999998
9.0                 255.14999999999998
10.0                 283.5
11.0                311.85
12.0                340.20000000000005
13.0                368.55000000000007
14.0                 396.9000000000001
15.0            425.2500000000001

最后,我的数字在&#34;克&#34;没有准确对齐。任何想法如何让他们完美对齐?

2 个答案:

答案 0 :(得分:4)

您可以使用另一种输出方法:

           System.out.format("%f%5f\n",ounce, gramsFormated);

您可以决定自己的宽度。在这个例子中它是5。

答案 1 :(得分:3)

如果您希望正确对齐和舍入到正确的位数,您可以使用System.out.format方法,如Mosa建议的那样。

System.out.format("%5.2f%20.2f%n", ounce, grams);

注意:

  • 格式为您完成所有对齐,无需添加标签。
  • 在格式字符串中编写换行符的可接受方式是%n,而不是\n
  • 第一部分%5.2f说:在5个字符宽的字段中打印第一个参数,小数点后面有两个数字。
  • 第二部分%20.2f对第二个参数执行相同操作,只将字段定义为20个字符宽。这也会在两列之间创建间距。当然,你可以改变那个宽度。