将int转换为float,PHP中的两个十进制值

men*_*ici 3 php integer casting decimal-point

可能重复:
PHP:显示小数点后2位数

如何转换整数,让我们说$i=50一个带有两个十进制值的浮点数:$m=50.00?我试过(float)$i但没有任何反应.

编辑:

我需要做出$i == $m回报TRUE;

dav*_*ler 8

round((float)$ i,2)应该做的伎俩.

round函数内置并将给定的float舍入到给定参数中指定的小数位数.

啊,是的,number_format($ var,2)也很好!

  • `number_format` 返回字符串不是浮点数.... (2认同)

Joe*_*oey 7

对于浮点数,小数位数是格式化属性,即数字本身不知道那些东西.甲float50存储为一个准确的整数50.你需要格式化的数量(使用sprintf例如)与十进制数字被写入.


nys*_*son 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.
Run Code Online (Sandbox Code Playgroud)

但是,如果我们想解决这个问题,我们只需要做:

$i = (double)$i;
gettype($i); // double
$i === $m; // true!
Run Code Online (Sandbox Code Playgroud)

  • 为什么对`var_dump()`的打印感兴趣?它只是调试消息,它应该**以最简单的方式打印值.OP对如何制作浮点数感兴趣(浮点数和双精度数在php中相同([解释](http://stackoverflow.com/questions/3280892/difference-between-float-and-double-in- php)))等于整数.`(float)$ i`和`(double)$ i`都在`var_dump()`中返回浮点数,在`gettype()`中返回double. (2认同)