对于变量int department;
System.out.print("Enter Department Number: ");
while (sc.hasNextLine()) {
String line = sc.nextLine();
if (line.matches("[123]")) {
System.out.println("Invalid entry. Please enter 1, 2, or 3 for the department number.");
System.out.print("Enter Department Number: ");
} else {
department = Integer.parseInt(line);
break;
}
}
我正在写
double spread = 0.135;
这是试图舍入到1个基点。 (100个基点= 1%)。
但它不包含任何小数部分。
为什么?
答案 0 :(得分:3)
这是整数除法截断的另一种变体;虽然比正常情况稍微深埋一层。
Math.round(spread * 10000)
会返回long
。将其除以100会将结果截断为long
。
你的修复?使用100.0
作为除数。然后表达式以浮点计算。
答案 1 :(得分:2)
当您将long
除以int
时,您会得到long
这是一个整数。简单的解决方案是除以双倍。尝试
Math.round(spread * 10000) / 100.0 + "%"
或
Math.round(spread * 1e4) / 1e2 + "%"
答案 2 :(得分:-1)
Round()返回一个long。因此div操作是一个很长的值。