将整数转换为浮点数/双精度浮点数

24

当我想将整数值转换为浮点数(带有小数点的数字)时,遇到了麻烦。

$a = 7200;
$b = $a/3600;

echo $b; // 2

$b = floatval($b);

echo $b; // 2

但应该回显2.02.00

我也尝试了settype,但没有成功。 而我只能找到有关“浮点数转整数”的帮助/解决方案/问题。


2和2.0是相同的数字,无论是否为浮点数。我理解您不喜欢看到小数点,但您所做的计算得出的商是整数。如果除以浮点数,您是否会遇到相同的情况? - Crackertastic
4个回答

38

更新:

用途:

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

使用

echo number_format($b, 2);

eg:

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

编辑:

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

使用

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

针对您的问题,使用

为什么 number_format 函数不起作用可以通过以下方式演示:echo number_format(1234,0) + 1.0 ,结果是2。

echo sprintf("%.2f",(1234 + 1.0 ) ); // returns 1235.00

number_format返回的是一个字符串,而不是浮点数。 - David Baucum
1
为什么 number_format 无法正常工作可以通过以下代码演示:echo number_format(1234,0) + 1.0。结果是 2 - David Baucum
@DavidBaucum 我更新了我的答案,感谢指出我的错误 :) - Tamil Selvan C
1
但是sprintf也返回一个字符串! - Kostiantyn
为什么每个人都回答输出呢?如果我想要格式化一个变量怎么办? - user12510360

11
你可以使用 number_format() 函数来实现这一点。该函数还允许你定义小数点后显示的零的位数,只需要使用第二个参数即可:
$a = 7200;
$b = $a/3600;
$b = floatval($b);
echo number_format($b, 2, '.', '');

或者,如果您想一行代码完成:

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

输出:

2.00

Demo!


9

请做类似于以下的事情:

<?php
    $a = 7200;
    $b = $a/3600;

    $b = number_format($b,2);

    echo $b; // 2.00
?>

-

number_format(number,decimals,decimalpoint,separator)

3
我自己找到了一个解决方案:
    $b = number_format((float)$b, 1, '.', '');
echo $b; // 2.0

做到了。

1
经过这么多次谷歌搜索,这个帮了我大忙!!!谢谢伙计。 - Khn Rzk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接