首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP NumberFormatter删除.00

PHP NumberFormatter删除.00
EN

Stack Overflow用户
提问于 2013-07-01 22:24:33
回答 5查看 3.2K关注 0票数 5

尝试从使用PHP NumberFormatter格式化的货币中删除最后一个.00,但似乎不可能。我可以看到这个选项,但它似乎不影响货币:DECIMAL_ALWAYS_SHOWN

代码语言:javascript
复制
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$nf->formatCurrency(0, 'EUR');
// Output is €0.00 but it doesn't seem possible to remove the .00

我会为.00做一个str_replace,但这可能会因语言环境的不同而有所不同,所以看起来并不容易。

EN

回答 5

Stack Overflow用户

发布于 2013-07-01 22:52:01

您只能使用format()方法强制执行此操作:

代码语言:javascript
复制
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$nf->setTextAttribute(\NumberFormatter::CURRENCY_CODE, 'EUR');
$nf->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 0);
echo $nf->format(1);
票数 6
EN

Stack Overflow用户

发布于 2013-07-01 22:52:39

试试这个:

代码语言:javascript
复制
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$nf->formatCurrency(0, 'EUR');
numfmt_set_attribute($nf, \NumberFormatter::MAX_FRACTION_DIGITS, 0);
echo numfmt_format($nf, 123.00)."\n";
票数 0
EN

Stack Overflow用户

发布于 2020-11-22 10:29:33

如果您只想删除.00,并且愿意保留它,而不是.00,那么您可以尝试:

代码语言:javascript
复制
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money =  $formatter->formatCurrency($money, 'USD');
$money = rtrim($money,".00");

如果要对小数点后的所有数字进行四舍五入,可以添加round

代码语言:javascript
复制
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money =  $formatter->formatCurrency(round($money,0), 'USD');

如果您分别需要较低和较高的值,也可以使用floorceil代替舍入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17406828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档