с плавающей запятой — PHP: округление числа до 16 десятичных цифр

Привет, я пытаюсь округлить число в 16 десятичных цифр но это только показывает и не округляет до 14 десятичных цифр.

Вот моя попытка:

<?php

$num= 0.16346153846153846;

$round = number_format((float)$num, 17, '.', '');

echo $round * -1;
?>

ВЫХОД:

-+0,16346153846154

ОЖИДАЕМЫЙ ВЫХОД:

0,1634615384615385

я знаю это поплавок только 14 десятичных цифр. Есть ли другой путь для 16 десятичных цифр?

3

Решение

Вы можете установить эти параметры во время выполнения. 16 цифр — это обычно максимум
значение на большинстве платформ, большие значения дают только бессмысленные или «вымышленные» цифры:

ini_set("precision", "16");

Увидеть Изменение уровня точности переменных с плавающей точкой

3

Другие решения

Можете ли вы попробовать сделать это, & видите что происходит? (Возможно, не лучший способ справиться с числами и числами)

$num = 0.16346153846153846;
$new_num = $num * -1;
echo number_format((float)$new_num, 17);

Умножьте сначала, затем попробуйте округлить результат.

0

number_format и precision Настройка INI использует float, что может привести к неожиданному поведению, если вы округлите до такого количества десятичных цифр.

Вы можете альтернативно использовать PHP десятичное расширение с $decimal->toFixed(16) или же $decimal->round(16) достичь этого с гарантированной точностью независимо от вашего INI.

0
По вопросам рекламы [email protected]