我有一个浮点数。我想将其转换为具有以下两个规则的字符串
- 如果浮点数没有小数部分,则不要创建任何小数部分
- 如果浮点数有小数部分,则将其转换为两位小数
例如
499 => "499"
499.5 => "499.50"
499.99 => "499.99"
499.989 => "499.99"
你会如何在 php 中做到这一点?
我有一个浮点数。我想将其转换为具有以下两个规则的字符串
例如
499 => "499"
499.5 => "499.50"
499.99 => "499.99"
499.989 => "499.99"
你会如何在 php 中做到这一点?
我认为这应该为您解决问题:
if(round(($var*100),0)%100==0)
{
echo round($var,0);
}
else
{
echo round($var,2);
}
可能有一种更优雅的方法,但这将通过以下方式起作用:
如果浮点数乘以 100 并四舍五入以 00 结尾(足够接近以四舍五入到没有小数),则回显它没有任何小数位。否则它会四舍五入到小数点后两位——浮点数应该注意舍入太多,所以我认为总会有两个可见的点。
您可以在 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)