nic*_*o_c 2 java currency modulus
我正在用Java处理大学工作,处理货币问题.为此,我建议使用ints而不是double,然后在打印语句时将其转换为美元值.
一切正常,直到我对数字4005进行计算(如$ 40.05表示为int).我正在粘贴我遇到问题的代码部分,如果有人能告诉我我做错了什么,我将不胜感激.
import java.io.*;
class modumess {
public static void main(String[] args) {
int money = 4005; //Amount in cents, so $40.05;
// Represent as normal currency
System.out.printf("$%d.%d", money/100, money%100);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在运行时显示40.5美元,而不是40.05美元.是什么赋予了?
请注意,这是我的作业,我想学习,所以我真的很感激这里解决问题的根源,而不仅仅是一个简单的解决方案.
编辑:在Finbarr的回答之后,我在代码中添加了以下内容,似乎解决了这个问题:
if (money%100 < 10) {
format = "$%d.0%d";
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的方法,还是我在这里过于复杂?
编辑:我只想说清楚,这是Finbarr和Wes的回答,这对我有帮助,我接受了Wes的答案,因为它让我更清楚如何继续.
对于一般情况,更好的方法是这样的:
format = "%d.%02d";
Run Code Online (Sandbox Code Playgroud)
%02d为2位数字提供0填充.这样你就不需要额外的if语句了.
有关您可以采用以下格式执行的操作的更多说明,请参阅此内容:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
| 归档时间: |
|
| 查看次数: |
2510 次 |
| 最近记录: |