【问题标题】:php - using sprintf to add "+" sign removes decimals from formatted numberphp - 使用 sprintf 添加“+”号从格式化数字中删除小数
【发布时间】:2013-07-09 04:48:27
【问题描述】:

我想这样做以显示股票指数的变化:

12 => +12.00
150.5 => +150.50
-30.2 => -30.20
-2.85193 => -2.85

我有这个:

sprintf("%+d", number_format(floatval($key), 2, '.', ','))

但它会从格式化数字中去除小数并返回诸如 +45 之类的内容。

有没有一种同时获得 + 号和小数的有效方法?

【问题讨论】:

    标签: php printf currency number-formatting


    【解决方案1】:

    %d 用于整数,您必须使用%f 用于浮点。

    sprintf("%+.2f", $key);
    

    很遗憾,您不能使用逗号。他们也不会使用您的原始代码,因为%d 将参数解析为整数,并且当它到达逗号时它将停止读取数字。

    如果你需要符号和逗号,你可以这样做:

    ($key >= 0 ? '+' : '') . number_format(floatval($key), 2, '.', ','))
    

    【讨论】:

    • 我认为你仍然需要通过 number_format 来获取千位分隔符。
    • @sebu 你确定你没有在做%+.6f
    • @Orangepill 我忘了.2,呵呵。
    • @Barmar 感谢符号和逗号的出色解决方案,非常好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多