在PHP中有条件地格式化浮点数

时间:2009-05-28 21:53:17

标签: php

我正在从php页面上的mysql数据库中检索浮点值(2.5,3.0等)

我想格式化这个值,这样如果它实际上是一个整数,它应该显示零小数位。 (它应输出3而不是3.0,但输出2.5为2.5)

实现这一目标的最简单方法是什么?

3 个答案:

答案 0 :(得分:3)

我会尝试以下方式:

echo (intval($v) == $v) ? intval($v) : $v;

但我想知道是否有更有效的方式。

答案 1 :(得分:1)

您也可以在查询中进行格式化,它可能比在php中执行格式化更快,特别是如果您要处理许多行。

类似的东西:

SELECT
    CASE 
        WHEN t.myColumn % 1 = 0 
            THEN FORMAT( t.myColumn, 0 ) 
            ELSE FORMAT( t.myColumn, 2 )
    END AS `formatted`
    ...
FROM myTable t
WHERE ...

如果您想在数据库外部执行此操作,则相同的方法适用于php:

$displayValue = $myValue % 1 == 0 
    ? number_format( $myValue, 0 ) 
    : number_format( $myValue, 2 );

答案 2 :(得分:0)

如果你想控制小数点右边显示的位数,你也可以使用printf:

  if (intval($v) == $v) printf("%d", intval($v)); else printf("%0.2f", $v);