格式字符串,不带小数或2位小数

时间:2012-09-27 09:24:27

标签: php

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

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

例如

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

你会在php中做到这一点吗?

2 个答案:

答案 0 :(得分:3)

我认为这应该适合你:

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

可能有更优雅的方式,但这将以下列方式工作:

如果float乘以100并且舍入结束于00(足够接近舍入到无小数),则回显没有任何小数位。否则它会四舍五入到小数点后两位 - 浮点数应该过多地舍入,所以我认为总会看到两个点。

答案 1 :(得分:2)

您可以在PHP中使用number_format Type Casting (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)