我真的很想知道,为什么以下代码总是返回7.我真的很困惑。
private int search(int[] seq, int key, int low, int high){
int mid = low + (high - low) / 2;
out : //label
if (key == mid) {
return mid;
}
if (key < mid) {
high = mid;
if (key != mid) {
break out;
}
}
return 1;
}
输出测试:
$a = (double) ((0.1 + 0.6) * 10); //Output: 7
$b = (int) ((0.1 + 0.6) * 10); //Output: 7
$c = (int) ((0.1 + 0.7) * 10); //Output: 7
答案 0 :(得分:4)
$a = (double) ((0.1 + 0.6) * 10); //Output: 7
$b = (int) ((0.1 + 0.6) * 10); //Output: 7
$c = (int) ((0.1 + 0.7) * 10); //Output: 7
理论上(0.1 + 0.7) * 10
部分应该评估为8而不是7。
脚本中第三表达式的输出计算结果为7,因为PHP引擎在内部将表达式的值存储为7.999999而不是7.
当小数值转换为整数时,PHP引擎只会截断小数部分。