Java 方法使用 int 而不是 double
Java method working with an int but not a double
当我使用 142.14 调用该方法时,我没有收到任何错误,但控制台上根本没有任何输出。当我发送 142 时,它按预期工作。为什么是这样?
此代码在 Java 中,我需要添加更多详细信息才能提出这个问题,所以我在这里添加更多详细信息。
public class Testing {
static int twentyCount = 0;
static int tenCount = 0;
static int fiveCount = 0;
static int dollarCount = 0;
static int quarterCount = 0;
static int dimeCount = 0;
static int nickelCount = 0;
static int pennyCount = 0;
public static void main(String[] args) {
returnChange(142.14);
}
public static void returnChange(double change) {
while (change >= 1.0) {
if(change >= 20.0) {
change = change - 20.0;
twentyCount++;
continue;
} if(change >= 10.0) {
change = change - 10.0;
tenCount++;
continue;
} if(change >= 5.0) {
change = change - 5.0;
fiveCount++;
continue;
} if(change >= 1.0) {
change = change - 1.0;
dollarCount++;
continue;
}
}
while (change != 0.0) {
if(change >= .25) {
change = change - .25;
quarterCount++;
continue;
} if(change >= .1) {
change = change - .1;
dimeCount++;
continue;
} if(change >= .05) {
change = change - .05;
nickelCount++;
continue;
} if(change >= .01) {
change = change - .01;
pennyCount++;
continue;
}
}
System.out.println("Change dispensed: " + twentyCount + " 20's, " + tenCount + " 10's, " + fiveCount + " 5's, "
+ dollarCount + " 1's, " + quarterCount + " quarters, " + dimeCount + " dimes, "
+ nickelCount + " nickels, and " + pennyCount + " pennies.");
}
}
考虑一下。变化可以是 .009999,因此不会被任何条件更新。并且它也将不等于 0.0。所以它将永远运行。所以在这种情况下,做:
while (change >= .01) // the smallest value you care about.
...
...
...
} if(change >= .01) {
change = change - .01;
pennyCount++;
continue;
}
}
它仍然会更新美分并正常退出。在未来的情况下,要么以分表示您的钱(例如 143.14 is 14314 cents
),要么使用 BigDecimal
进行计算。一般情况下,不要使用双倍的金钱价值。
当我使用 142.14 调用该方法时,我没有收到任何错误,但控制台上根本没有任何输出。当我发送 142 时,它按预期工作。为什么是这样? 此代码在 Java 中,我需要添加更多详细信息才能提出这个问题,所以我在这里添加更多详细信息。
public class Testing {
static int twentyCount = 0;
static int tenCount = 0;
static int fiveCount = 0;
static int dollarCount = 0;
static int quarterCount = 0;
static int dimeCount = 0;
static int nickelCount = 0;
static int pennyCount = 0;
public static void main(String[] args) {
returnChange(142.14);
}
public static void returnChange(double change) {
while (change >= 1.0) {
if(change >= 20.0) {
change = change - 20.0;
twentyCount++;
continue;
} if(change >= 10.0) {
change = change - 10.0;
tenCount++;
continue;
} if(change >= 5.0) {
change = change - 5.0;
fiveCount++;
continue;
} if(change >= 1.0) {
change = change - 1.0;
dollarCount++;
continue;
}
}
while (change != 0.0) {
if(change >= .25) {
change = change - .25;
quarterCount++;
continue;
} if(change >= .1) {
change = change - .1;
dimeCount++;
continue;
} if(change >= .05) {
change = change - .05;
nickelCount++;
continue;
} if(change >= .01) {
change = change - .01;
pennyCount++;
continue;
}
}
System.out.println("Change dispensed: " + twentyCount + " 20's, " + tenCount + " 10's, " + fiveCount + " 5's, "
+ dollarCount + " 1's, " + quarterCount + " quarters, " + dimeCount + " dimes, "
+ nickelCount + " nickels, and " + pennyCount + " pennies.");
}
}
考虑一下。变化可以是 .009999,因此不会被任何条件更新。并且它也将不等于 0.0。所以它将永远运行。所以在这种情况下,做:
while (change >= .01) // the smallest value you care about.
...
...
...
} if(change >= .01) {
change = change - .01;
pennyCount++;
continue;
}
}
它仍然会更新美分并正常退出。在未来的情况下,要么以分表示您的钱(例如 143.14 is 14314 cents
),要么使用 BigDecimal
进行计算。一般情况下,不要使用双倍的金钱价值。