dechex 函数输出错误的结果

dechex function outputs wrong result

我有一个简单但相当复杂的问题,我可以使用一些关于如何解决它的建议。 我一直在尝试之前提出的问题的所有解决方案,但 none 似乎有效。

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

参考文献:

Live example

bcmul