Функция dechex выводит неверный результат

У меня есть простая проблема, но довольно сложная, и я мог бы воспользоваться некоторыми советами о том, как ее решить.
Я пробовал все решения вопросов, заданных ранее, но ни один из них, похоже, не работает.

echo dechex(0.258068 * 1000000000000000000); //returns 394d77a8be54020

Однако правильное значение

394D77A8BE54000

как я могу преобразовать его в правильное значение, я понимаю, что это большое целое число, и это проблема, но как я могу получить правильные значения внутри моего скрипта?

2

Решение

Вы правы: вы получаете ошибку с плавающей запятой. Обратите внимание, что 0.258068 * 1000000000000000000 это число с плавающей точкой, а не целое число.

Вот решение:

echo 0.258068 * 1000000000000000000;
echo PHP_EOL;
$i = bcmul(0.258068, 1000000000000000000);
echo $i;
echo PHP_EOL;
$h = dechex($i);
echo $h;

Результат:

2.58068E+17
258068000000000000
394d77a8be54000

Refs:

Живой пример

bcmul

0

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

Других решений пока нет …

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