我想在价格结尾处删除.00
function getMoney($mon) {
setlocale(LC_MONETARY, 'en_US');
return money_format('%.2n', $mon);
}
谢谢,
答案 0 :(得分:15)
尝试使用此版本的money_format()函数:
money_format('%.0n', $mon);
根据money_format(http://us.php.net/manual/en/function.money-format.php)上的PHP文档,使格式字符串'%。2n'将强制显示带小数点的数字和小数点右边的2位小数,无论分数是多少,然后根据区域设置的国家货币格式格式化数字。
用'%.0n'替换它,你总是会在钱结束时删除小数。当然,这将删除所有值的小数,而不仅仅是最后的.00。如果要有条件地删除.00,请检查$ mon的值是否包含小数部分,如果是,则显示为'%0.2n'。
答案 1 :(得分:4)
在第一次检查时,您的代码似乎要求通过'%.2n'
显示分数,但我注意到PHP function reference上的以下链接包含有关Debian set_locale()
的警告。
你没有使用Debian,是吗?
答案 2 :(得分:0)
请查看PHP manual:
您需要设置正确的精度:
function getMoney($mon) {
setlocale(LC_MONETARY, 'en_US');
return money_format('%.0n', $mon);
}
答案 3 :(得分:0)
所以你想要删除美分,但前提是没有美分?总有快速而肮脏的正则表达式:
preg_replace("/\\.00^/", "", money_format('%.2n', $mon))
答案 4 :(得分:0)
nickf是对的(有点),而ben是错误的,你的money浮动变量可能有一个小数部分,但一旦格式化它可以舍入到0美分,所以它应该总是在事后删除。 nickf的代码应该是:
preg_replace('/\.00$/', '', money_format('%.2n', $mon))