Как запретить 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); ... даст мне то, что я хочу, но я уверен, что что-то упускаю.

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

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