php 7.1 中的舍入不正确

incorrect rounding in php 7.1

1.15 * 100              // 115 correct
(int)(1.15 * 100)       // 114 incorrect
intval(1.15 * 100)      // 114 incorrect

floor(1.15 * 100)       // 114 incorrect
floor(1.1501 * 100)     // 115 correct

我试着把第2个字符后的小数部分截掉,然后把它翻译成整数。结果出错了。告诉我如何正确翻译。

var_dump( 1.15 * 100 ); 输出一个浮点数 - 未修改。

var_dump( (int)(1.15 * 100) ); 输出一个 int - 上面的 float 转换为 int,即使对于看似相同的数字也会四舍五入。

$var1 = (string)(1.15 * 100);
var_dump( (int)($var1) );

您需要先将 float 转换为字符串,然后再转换为 int。

编辑:或单行答案:intval(strval(1.15 * 100))