如何转换整数,假设$i=50
为具有两个十进制值的浮点数:$m=50.00
?我试过(float)$i
但没有任何反应。
修改
我需要制作$i == $m
,以便返回TRUE
;
答案 0 :(得分:8)
round((float)$ i,2)应该这样做。
圆函数内置并将给定的float舍入到给定参数中指定的小数位数。
啊,是的,number_format($ var,2)也很好!
答案 1 :(得分:7)
对于浮点数,小数位数是格式化属性,即数字本身不知道那些东西。 float
50存储为精确整数50.您需要格式化数字(例如,使用sprintf
)以十进制数字写入。
答案 2 :(得分:7)
如果您只是使用常规相等运算符(==
)而不是类型安全相等运算符(===
),那么您应该没有任何问题。
将double与具有相同值的int进行比较:
$i = 20;
$m = 20.00;
gettype($i); // integer
gettype($m); // double
$i == $m; // true;
$i === $m; // false, $m is a double and $i is an integer.
但是,如果我们想解决这个问题,我们只需要这样做:
$i = (double)$i;
gettype($i); // double
$i === $m; // true!