尝试从使用PHP NumberFormatter格式化的货币中删除最后一个.00,但似乎不可能。我可以看到这个选项,但它似乎不影响货币:DECIMAL_ALWAYS_SHOWN
$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,但这可能会因语言环境的不同而有所不同,所以看起来并不容易。
发布于 2013-07-01 22:52:01
您只能使用format()方法强制执行此操作:
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$nf->setTextAttribute(\NumberFormatter::CURRENCY_CODE, 'EUR');
$nf->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 0);
echo $nf->format(1);发布于 2013-07-01 22:52:39
试试这个:
$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";发布于 2020-11-22 10:29:33
如果您只想删除.00,并且愿意保留它,而不是.00,那么您可以尝试:
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money = $formatter->formatCurrency($money, 'USD');
$money = rtrim($money,".00");如果要对小数点后的所有数字进行四舍五入,可以添加round
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money = $formatter->formatCurrency(round($money,0), 'USD');如果您分别需要较低和较高的值,也可以使用floor和ceil代替舍入。
https://stackoverflow.com/questions/17406828
复制相似问题