Php 为什么这些表达式总是返回7?

Php 为什么这些表达式总是返回7?,php,Php,我真的很想知道,为什么下面的代码总是返回7。我真的很困惑 $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 输出测试: echo ($a == $b && $a == $c); //Output: true 理论上(0.1+0.7)*10零件应评估为8而

我真的很想知道,为什么下面的代码总是返回7。我真的很困惑

$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
输出测试:

echo ($a == $b && $a == $c); //Output: true
理论上
(0.1+0.7)*10
零件应评估为8而不是7

脚本中第三个表达式的输出结果为7,因为PHP引擎在内部将表达式的值存储为7.999999,而不是7

当分数值转换成整数时,PHP引擎会简单地截断分数部分

理论上
(0.1+0.7)*10
零件应评估为8而不是7

脚本中第三个表达式的输出结果为7,因为PHP引擎在内部将表达式的值存储为7.999999,而不是7

当分数值转换成整数时,PHP引擎只需截断分数部分。

请参见
$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