Привет, я пытаюсь округлить число в 16 десятичных цифр но это только показывает и не округляет до 14 десятичных цифр.
Вот моя попытка:
<?php
$num= 0.16346153846153846;
$round = number_format((float)$num, 17, '.', '');
echo $round * -1;
?>
ВЫХОД:
-+0,16346153846154
ОЖИДАЕМЫЙ ВЫХОД:
0,1634615384615385
я знаю это поплавок только 14 десятичных цифр. Есть ли другой путь для 16 десятичных цифр?
Вы можете установить эти параметры во время выполнения. 16 цифр — это обычно максимум
значение на большинстве платформ, большие значения дают только бессмысленные или «вымышленные» цифры:
ini_set("precision", "16");
Увидеть Изменение уровня точности переменных с плавающей точкой
Можете ли вы попробовать сделать это, & видите что происходит? (Возможно, не лучший способ справиться с числами и числами)
$num = 0.16346153846153846;
$new_num = $num * -1;
echo number_format((float)$new_num, 17);
Умножьте сначала, затем попробуйте округлить результат.
number_format
и precision
Настройка INI использует float
, что может привести к неожиданному поведению, если вы округлите до такого количества десятичных цифр.
Вы можете альтернативно использовать PHP десятичное расширение с $decimal->toFixed(16)
или же $decimal->round(16)
достичь этого с гарантированной точностью независимо от вашего INI.