php 7.1中不正确的舍入[重复]

问题描述 投票:-1回答: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

我尝试在第二个字符后切掉小数部分并将其转换为整数。事实证明是错误的。告诉我如何正确翻译。

php php-7.1
1个回答
1
投票

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))

© www.soinside.com 2019 - 2024. All rights reserved.