使用Java时小数位数过多?

使用Java时小数位数过多?,java,decimal,rounding,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 g

我目前正试图让我的程序四舍五入到小数点后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);

最后,我在“克”下面的数字排列不完全正确。有没有办法让它们完全对齐?

您可以使用另一种输出方法,如下所示:

System.out.format(“%f%5f\n”,盎司,格雷姆格式);

你可以决定你想要的宽度。在本例中为5。

如果您希望正确对齐并四舍五入到正确的位数,可以按照Mosa的建议使用
System.out.format
方法

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

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

该输出似乎不是来自该代码,因为
gramsformatted
在循环中没有更改。真正的密码是什么?我不知道你的意思。我可以试着改变它,但这是代码。看到这段代码后,我意识到我可以简单地使用“grams”而不是“gramsformatted”,如果这是你的意思的话。编辑我稍微编辑了我的代码,但是输出没有改变。我的意思是你没有粘贴产生你粘贴的输出的代码。使用
grams
更合理。如果它是
gramsFormatted
,那么使用此代码,它将在所有行中打印相同的值。不管怎样,现在你根本没有格式化它。不幸的是,这对我不起作用,因为我需要每一行代码都在单独的一行,而不是水平的一行。哦,对不起。使用这个:System.out.format(“%f%5f\n”,盎司,格雷姆格式);似乎是in-line
System.out.format(“%f%5f\n”,盎司,“\t\t”,克,”)该“\t\t\t”会导致这种格式设置方式出现问题。我不确定是否有办法解决这个问题……不,不要这样做。完全按照答案中的方式执行:System.out.format(“%f%5f\n”,盎司,GramFormatted);您可以在此处找到有关格式化的更多信息:
System.out.format("%5.2f%20.2f%n", ounce, grams);