1

我有一个浮点数。我想将其转换为具有以下两个规则的字符串

  • 如果浮点数没有小数部分,则不要创建任何小数部分
  • 如果浮点数有小数部分,则将其转换为两位小数

例如

499 => "499"
499.5 => "499.50"
499.99 => "499.99"
499.989 => "499.99"

你会如何在 php 中做到这一点?

4

2 回答 2

3

我认为这应该为您解决问题:

if(round(($var*100),0)%100==0)
{
    echo round($var,0);
}
else
{
    echo round($var,2);
}

可能有一种更优雅的方法,但这将通过以下方式起作用:

如果浮点数乘以 100 并四舍五入以 00 结尾(足够接近以四舍五入到没有小数),则回显它没有任何小数位。否则它会四舍五入到小数点后两位——浮点数应该注意舍入太多,所以我认为总会有两个可见的点。

于 2012-09-27T09:27:26.993 回答
2

您可以在 PHP中number_format使用类型转换 (string)

$numbers = array(499,499.5,499.99,499.989);
foreach ( $numbers as $number ) {
    var_dump(__format($number));
}

使用的功能

function __format($number) {
    if (is_float($number)) {
        return number_format($number, 2);
    } else {
        return (string) $number;
    }
}

输出

string '499' (length=3)
string '499.50' (length=6)
string '499.99' (length=6)
string '499.99' (length=6)
于 2012-09-27T09:28:24.840 回答