疑问:
1.23 这个数值,在 float 在内部二进制转换时已经失真,为什么乘以 100 之后,最终的高精度表示结果 不是 1.2299999**** 类似这样的,而是 1.23000000000 这个结果呢?
PHP 的乘法运算符进行了猜测修正吗?
为什么乘以 100,最终结果是保真的, 乘以 10,不是保真的呢?
乘法运算符的代码: https://github.com/php/php-src/blob/master/Zend/zend_multiply.h
求大神解读。
乘 100 执行结果为:
乘 10 执行结果为:
[运行结果在 PHP5.4、5.6 和 7.1 上无差异,另外, 乘以 10 的结果是不保真的]
运行代码为:
echo "";
$a = 1.23;
$b = 100; //第二次运行 $b = 10;
echo '
$a = 1.23;
$b = 100;
';
echo '$a 的高精度数值为:';
printf("%0.30f", $a);
echo '
';
echo '$b 的高精度数值为:';
printf("%0.30f", $b);
echo "
";
echo '$a 的数据类型: ';
var_dump($a);echo "
";
echo '$b 的数据类型: ';
var_dump($b);echo "
";
$total = $a * $b;
echo '执行的计算为:
$total = $a * $b;
';
echo "
";
echo '计算结果:$total 为 ';
var_dump($total);echo "
";
echo '高精度计算结果: ';
printf("%0.99f", $total);
岌的意思,岌的解释,岌的拼音,岌的部首,岌的笔顺1吨等于多少立方米?