2013-07-01 7 views
1

Пытается удалить последний .00 из валюты, отформатированной с использованием PHP NumberFormatter, но это не представляется возможным. Я могу видеть этот вариант, но это, похоже, не влияет на валюту: DECIMAL_ALWAYS_SHOWNPHP NumberFormatter, удаляющий .00

$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 

Я хотел бы сделать str_replace для .00, но это может быть различным в зависимости от места, так что не кажется, что легко.

+1

Разделите его на 1. Например, эхо "1.00"/1; отпечатки 1. – karmafunk

+0

@karmafunk Интересный ... никогда не знал об этом! –

+1

Да, но это строка, на которой есть символ евро. – Pitchinnate

ответ

3

Вы можете принудить только с 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); 
+0

Это не работает по запросу: оно округляет/уменьшает число. Попробуйте '$ nf-> format (10.50)', и вы не получите 10.50, но ** 10 ** – Magikman

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"; 
-2

наклоняет вы делаете это с круглым()?

echo round($nf, 0) 
+1

Возвращаемое значение - это строка, так как там есть символ валюты. –

Смежные вопросы