输入的价值不准确

时间:2015-01-13 11:31:35

标签: java

 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,这会抛出整个程序。

3 个答案:

答案 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));
 }