2

我为一个执行单利和复利计算的学术项目编写了一个程序。我遇到的问题是,如果数字没有除零以外的其他值作为“美分”(即,它不显示小数点——如果金额为例如 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 的通用包罗万象,不同的符号模式做不同的事情。就我而言,有必要将 #.## 更改为 0.00 以查看我想要的十进制数字。非常感谢 jpe。

4

1 回答 1

2

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

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

您应该将您的模式替换为0.00.

于 2012-09-30T05:40:32.437 回答