用 PHP 格式化数字

Posted

技术标签:

【中文标题】用 PHP 格式化数字【英文标题】:Formatting Numbers with PHP 【发布时间】:2013-05-06 16:30:56 【问题描述】:

我在 mysql 中使用 double(10,2) 保存数字。

数字被保存如下:

456.2

232.20

764

在输出时,我想强制使用 2 位小数并添加必要的尾随零(货币)。

这是我正在使用的功能,但它不起作用。

function format_currency_form($get_money) 

    $money_output = abs(number_format($get_money, 2, '.', ''));

    return $money_output;

(我使用 ABS 是因为我希望该值显示为正数,而不管其在 db 中的真实值如何)

这是用于输出数据的代码块:

<?php echo format_currency_form($row_rs_data['trans_amount']); ?>

没有错误被抛出,也没有尾随零...

有什么想法吗?

谢谢

布雷特

【问题讨论】:

经过更多测试,如果我删除 abs(),它可以工作。 【参考方案1】:

如果您正在处理货币,请尝试使用 moneyformat

http://php.net/manual/en/function.money-format.php

money_format('%.2n', $number)

在你的情况下,腹肌应该以这种方式完成:

$number=-11.44;
$money_output = money_format('%.2n', abs($number));
echo $money_output;

如果您正在处理货币(我认为是这样),money_format 为您提供了很多选择。

【讨论】:

嗨,布雷特!这就是为什么你需要先做腹肌。我已经更新了我的答案。 现在可以使用了,谢谢!是的,我认为使用为货币构建的函数更有意义。【参考方案2】:

使用sprintf 输出格式化字符串。

echo sprintf("%.2f", format_currency_form($blah_blah));

【讨论】:

只是想澄清一下,%.2f 表示小数点后 2 位的浮点值。 sprintf 和其他格式化函数在以这种方式使用时将添加尾随零以强制字符串匹配规范。 764 变为 764.00764.2 变为 764.20,等等 这有效,即使使用 abs() 函数,我的初始函数也没有,money_format 也没有。不知道为什么。

以上是关于用 PHP 格式化数字的主要内容,如果未能解决你的问题,请参考以下文章

用 PHP 格式化数字

php用逗号格式化数字

PHP 用科学记数法格式化数字

关于时间格式的转换,MYSQL,PHP,10位数字表示时间

学习PHP中国际化地数字格式处理

php格式化数字?