Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP NumberFormatter删除.00_Php - Fatal编程技术网

PHP NumberFormatter删除.00

PHP NumberFormatter删除.00,php,Php,试图从使用PHP NumberFormatter格式化的货币中删除last.00,但似乎不可能。我可以看到此选项,但它似乎不会影响货币:DECIMAL\u始终显示 $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 我会

试图从使用PHP NumberFormatter格式化的货币中删除last.00,但似乎不可能。我可以看到此选项,但它似乎不会影响货币:
DECIMAL\u始终显示

$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_替换,但这可能会因区域设置的不同而有所不同,因此看起来并不那么容易。

您只能使用
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);
试试这个:

$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";
你不能用round()吗


如果您希望仅删除
.00
,并且如果没有
.00
则愿意保留它,那么您可以尝试:

$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money =  $formatter->formatCurrency($money, 'USD');
$money = rtrim($money,".00");
在这种情况下,如果您希望在小数后对所有这些数字进行四舍五入,您可以添加
四舍五入

$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money =  $formatter->formatCurrency(round($money,0), 'USD');

如果您分别需要下限值和上限值,也可以使用
floor
ceil
代替圆。

将其除以1。例如,回声“1.00”/1;打印1。@karmafunk有趣。。。我从来不知道!是的,但它是一个字符串,上面有欧元符号
function您是否尝试过
public bool NumberFormatter::setPattern(string$pattern)
返回的值是一个字符串,因为其中包含货币符号。这不符合要求:它将数字向上/向下舍入。试试
$nf->format(10.50)
,你不会得到10.50而是10
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$money =  $formatter->formatCurrency(round($money,0), 'USD');