将 int 转换为浮点/双精度


converting int to float/double

当我想将integer值转换为float(带点的数字)时,我遇到了麻烦。

$a = 7200;
$b = $a/3600;
echo $b; // 2
$b = floatval($b);
echo $b; // 2

但它应该呼应2.02.00

我也尝试了settype,但没有成功。而且我只找到"浮动到 int"的帮助/解决方案/问题。

更新:

echo sprintf("%.2f", $b); // returns 2.00

echo number_format($b, 2);

例如:

echo number_format(1234, 2); // returns 1,234.00

编辑:

@DavidBaucum 是的,number_format() 返回字符串。

echo sprintf("%.2f", $b);

对于您的问题,请使用

为什么number_format不起作用可以由此证明。 number_format(1234,0) + 1.0 结果为 2

echo sprintf("%.2f",(1234 + 1.0 ) ); // returns 1235.00
您可以使用

number_format()函数来完成此操作。此函数还允许您定义要在小数点后显示的零数 - 您只需要使用第二个参数:

$a = 7200;
$b = $a/3600;
$b = floatval($b);
echo number_format($b, 2, '.', '');

或者,如果你想做一行:

echo number_format( (float) $b, 2, '.', '');

输出:

2.00

演示!

像这样:

<?php
    $a = 7200;
    $b = $a/3600;
    $b = number_format($b,2);
    echo $b; // 2.00
?>

-

number_format(number,decimals,decimalpoint,separator)

我自己找到了一个解决方案:

    $b = number_format((float)$b, 1, '.', '');
echo $b; // 2.0

能解决问题