这个问题在这里已有答案:
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
我尝试在第二个字符后切掉小数部分并将其转换为整数。事实证明是错误的。告诉我如何正确翻译。
var_dump( 1.15 * 100 );
输出一个浮点数 - 未经修改。
var_dump( (int)(1.15 * 100) );
输出一个int - 上面转换为一个int的浮点数,即使对于看似相同的数字也会进行舍入。
$var1 = (string)(1.15 * 100);
var_dump( (int)($var1) );
您需要先将float转换为字符串,然后再转换为int。
编辑:或单行答案:intval(strval(1.15 * 100))