简单兴趣计算中的兴趣计算器截断错误(涉及DecimalFormat)

时间:2012-09-30 05:31:57

标签: java floating-point double

我为一个学术项目编写了一个程序,该程序执行简单的兴趣和复利计算。我遇到的问题是,如果数字没有除零以外的其他东西,那么计算的简单利息就会被截断,因为"分数" (即,它没有显示小数点 - 如果数量是例如1750.00它将显示为1750),即使我在我的方法上使用DecimalFormat进行复合和简单的兴趣!

我已经对项目进行了广泛的调试,但我真的不知道到底发生了什么。

该计划的相关摘录如下:

  double p=1.0; // just some sample values for p, r, and y.
  double r=2.0;
  double y=3.0;
  double calculatedInterest = p + (p*(r/100)*y);
  String output = new String("Computed Simple Interest is: $");
  output = output + new DecimalFormat("#.##").format(calculatedInterest);
  return output;

我在这里有完整的程序:

http://pastebin.com/sgg0P5ZQ

[编辑]故事的道德:如果您没有读过您遇到过问题或者不了解的课程的JavaDoc,那么您将会有一个糟糕的时间。符号模式#。##不仅仅是DecimalFormat的通用catch-all,不同的符号模式做不同的事情。在我的情况下,有必要将#。##更改为0.00,以便查看我想要的十进制数。非常感谢jpe。

1 个答案:

答案 0 :(得分:2)

查看JavaDoc of DecimalFormat。您使用“#。##”之类的模式。 #的文档说:

Symbol  Location    Localized?  Meaning 
#   Number  Yes     Digit, zero shows as absent

您应该使用0.00替换您的模式。