У меня есть простая проблема, но довольно сложная, и я мог бы воспользоваться некоторыми советами о том, как ее решить.
Я пробовал все решения вопросов, заданных ранее, но ни один из них, похоже, не работает.
echo dechex(0.258068 * 1000000000000000000); //returns 394d77a8be54020
Однако правильное значение
394D77A8BE54000
как я могу преобразовать его в правильное значение, я понимаю, что это большое целое число, и это проблема, но как я могу получить правильные значения внутри моего скрипта?
Вы правы: вы получаете ошибку с плавающей запятой. Обратите внимание, что 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:
Других решений пока нет …