我为一个学术项目编写了一个程序,用于执行单利和复利计算。我遇到的问题是,如果数字没有除零以外的“分”(即,它不显示小数点 - 例如,如果金额为 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;
我这里有完整的程序:
[编辑]故事的寓意:如果您不阅读遇到问题或不理解的类的 JavaDoc,那么您将会遇到麻烦。符号模式 #.## 不仅仅是 DecimalFormat 的通用包罗万象,不同的符号模式做不同的事情。就我而言,需要将 #.## 更改为 0.00 才能看到我想要的十进制数字。非常感谢jpe。
最佳答案
看看JavaDoc of DecimalFormat 。您使用“#.##”之类的模式。 #
的文档说:
Symbol Location Localized? Meaning
# Number Yes Digit, zero shows as absent
您应该将您的模式替换为 0.00
。
关于java - 利息计算器单利计算中的截断错误(涉及DecimalFormat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12658919/