Как запретить NumberFormatter округлять десятичные числа?Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 Как запретить NumberFormatter округлять десятичные числа?

Сообщение Гость »


Я пытаюсь написать функцию общего назначения для форматирования десятичных чисел, которая работает с любым количеством десятичных знаков, сохраняя исходное количество десятичных знаков.

Вот что у меня есть (в тесте):

setlocale(LC_MESSAGES, 'en_US'); $formatter = новый \NumberFormatter('en_US', \NumberFormatter::DECIMAL); $номер = 1234,56789; $this->assertEquals('1,234.56789', $formatter->format($num, \NumberFormatter::TYPE_DOUBLE)); ... но ничего не получится:

Не удалось подтвердить равенство двух строк. Ожидается: '1 234,56789' Фактический: '1 234,568' Добавив эту строку:

echo 'MAX_FRACTION_DIGITS: '. $formatter->getAttribute(\NumberFormatter::MAX_FRACTION_DIGITS) . PHP_EOL; ... Мне удалось определить, что по умолчанию NumberFormatter округляет число до 3 цифр.

Установка большого числа для MAX_FRACTION_DIGITS следующим образом:

$formatter->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 100); ... даст мне то, что я хочу, но я уверен, что что-то упускаю.

Есть ли менее хакерский способ сделать то, что я хочу? 🙂
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»