Как округлить float до N значащих цифр?

Есть функция round(), которая позволяет округлить float, оставив N знаков после запятой. Но мне нужно фиксировать не количество знаков после запятой, а количество значащих цифр.

Например, вот такой массив

array (
  'HRN/RUB' => 0.41199999999999998,
  'HRN/DOL' => 25.940000000000001,
  'HRN/RUR' => 0.40000000000000002,
  'HRN/USD' => 25.800000000000001,
  'UAH/WMZ' => 24.905000000000001,
  'UAH/WMR' => 0.41339396444811904,
  'UAH/WMB' => 12.9,
  'DOL/HRN' => 0.038461538461538464,
  'DOL/RUB' => 0.01646090534979424,
  'RUB/HRN' => 2.4038461538461537,
  'RUB/DOL' => 60.75,
)


после преобразования должен дать следующее:

array (
  'HRN/RUB' => 0.4120,
  'HRN/DOL' => 25.94,
  'HRN/RUR' => 0,4000,
  'HRN/USD' => 25.80,
  'UAH/WMZ' => 24.91,
  'UAH/WMR' => 0.4134,
  'UAH/WMB' => 12.90,
  'DOL/HRN' => 0.03846,
  'DOL/RUB' => 0.01646,
  'RUB/HRN' => 2.404,
  'RUB/DOL' => 60.75,
)


То есть нужно применить стандартное округление до 4 значащих цифр.
Есть в PHP такая функция? А то не хочется изобретать велосипед.
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
round($x, 3-floor(log10($x)))
Только у вас числа неправильно записаны. В PHP разделитель десятичной части - точка, а не запятая.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы