public void Calculate(double value){
int quarter, dime, nickel, remainder;
value *= 100;
System.out.println(value);
这是一个简单的硬币计数器程序(我正在学习编程)的一部分 - 我的值设置为2.26,但发现我没有得到所需的答案,所以我做了System.out.println(value)找出我没有得到预期价值的地方。值= 2.26,我应该得到226,但我得到225.99999999999997,这会抛出整个程序。
答案 0 :(得分:0)
您正在使用double
。双重存储在内存中十进制之后的许多地方所以2.26是一个近似的值,如2.25999999 ......
您必须将结果四舍五入到两位小数以获得准确的值。
如果您想知道如何舍入数字,请参阅此答案enter link description here
答案 1 :(得分:0)
你可以添加cast到float,然后它可以正常工作
public static void main(String[] args) {
Calculate ((float) 2.26);
}
public static void Calculate(float value){
int quarter, dime, nickel, remainder;
value *= 100;
System.out.println(value);
}
答案 2 :(得分:0)
这是解决方案
public void Calculate(double value){
int quarter, dime, nickel, remainder;
value *= 100;
System.out.println(round(value,0));
}