【问题标题】:PHP simplexml -- formatting integersPHP simplexml——格式化整数
【发布时间】:2011-09-19 08:08:39
【问题描述】:

我正在使用 simplexml 从远程服务器恢复 xml,我得到的值看起来像这样:

1.28586732

-1.2357956

我将这些值保存在一个变量中,但我想:

  1. 显示每个值,小数点后不超过 2 位
  2. 如果值为正数,则在该值前面加上一个加号
  3. 根据值是正数还是负数应用不同的 CSS 样式(例如,如果值是负数,则以红色显示)

谢谢!

【问题讨论】:

    标签: php variables formatting integer simplexml


    【解决方案1】:

    要仅显示 2 位小数,您可以使用 round($num, 2) 或 sprintf("%.2f", $num),区别在于 sprintf 始终返回 2 位小数,即 5 将是 5.00,而 round 仅显示必要的小数位数。 sprintf 也是区域感知的。

    要在值前加上加号,您只需执行if ($num >= 0) $num = '+'.$num;

    最后要做 CSS 样式,你应该将数字包装在一个 span 中并给它一个类,即 positive 或 negative。

    要做到这三个,你可以有一个这样的函数:

    function format_decimal($num)
    {
        return sprintf(
            '<span class="%s">%+.2f</span>',
            $num < 0 ? 'negative' : 'positive',
            $num
        );
    }
    

    【讨论】:

    • @stereofrog:很好,这是一个更好的方法,我会编辑我的答案。
    【解决方案2】:

    让:

    $s=1.2344545665
    
    if($s>=0)
    {
    echo "<div class=\"addclass\">+".roundDigits($s,2) . "</div>";
    }
    else
    {
    echo "<div class=\"minusclass\">-".roundDigits($s,2) . "</div>";
    }
    

    【讨论】:

    • 变量定义后缺少分号。什么是roundDigits,我想你的意思是round。当它隐含地存在时,为什么要在负数上加上负号?这个答案有很多错误。
    【解决方案3】:

    查看 number_format。 http://php.net/manual/en/function.number-format.php 然后如果 >= 0 表示肯定,

    【讨论】:

    • 您可能希望先将其类型转换为 (float) 或 (double)。
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2011-08-29
    • 2016-10-29
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多