PHP来回合并添加$ Sign

时间:2017-02-24 19:33:07

标签: php format currency

我想对所有数字进行舍入,并在前面添加一个$符号,没有小数。我尝试了以下,它正在四舍五入,但没有添加$。在$

中添加的语法是什么
$number = '122.86';

utf8_encode(money_format('%.0n',$number));

上面的语法产生123,我想要的ouptut是$ 123

4 个答案:

答案 0 :(得分:2)

检查您的区域设置,因为它们会影响{​​{3}}的输出。在脚本顶部添加此项可以直接修复您的问题,但可能不是您真正想要做的事情:

setlocale(LC_MONETARY, 'en_US.UTF-8');

另一种选择是按照@ chris85的建议,只需手动提供美元符号:

echo '$' . utf8_encode(money_format('%.0n',$number));

删除任何可能存在或可能不存在的美元符号可能是也可能不值得,只是因为如果部署到恰好具有不同配置的系统,就不会出现双美元符号

答案 1 :(得分:2)

将此作为社区维基发布,因为我基于Balvinder's (original) answer

  • 我不想为此代表。

intval()需要删除,因为这将产生122而不是123.

注意:122.86接近123而不是122;基础学校数学教学。

$number='122.86'; 
echo "$".round($number);

只需"round"

注意:

money_format()在Windows中不起作用,只是让您知道和其他人访问该问题。

  

“函数money_format()仅在系统具有strfmon功能时定义。例如,Windows没有,因此在Windows中未定义money_format()。”

答案 2 :(得分:0)

请使用round()函数进行圆值并与$ sign连接 使用此代码

<?php $number='122.86'; echo "$".round($number); ?>

答案 3 :(得分:-1)

在PHP文档的用户贡献说明中找到了您的answer

$number = '122.86';
setlocale(LC_MONETARY, 'en_US.UTF-8');
echo utf8_encode(money_format('%.0n', $number));