Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php dechex函数输出错误的结果_Php_Linux_64 Bit_Php 7 - Fatal编程技术网

Php dechex函数输出错误的结果

Php dechex函数输出错误的结果,php,linux,64-bit,php-7,Php,Linux,64 Bit,Php 7,我有一个简单的问题,但相当复杂,我可以用一些建议来解决它。 我已经尝试过所有问题的解决方案,但似乎没有一个有效 echo dechex(0.258068 * 1000000000000000000); //returns 394d77a8be54020 但是,正确的值是 394D77A8BE54000 如何将其转换为正确的值,我知道是一个大整数,这是一个问题,但如何在脚本中获得正确的值?您是正确的:您得到了一个浮点不准确错误。请注意,0.258068*10000000000000000是浮点,

我有一个简单的问题,但相当复杂,我可以用一些建议来解决它。 我已经尝试过所有问题的解决方案,但似乎没有一个有效

echo dechex(0.258068 * 1000000000000000000); //returns 394d77a8be54020
但是,正确的值是

394D77A8BE54000


如何将其转换为正确的值,我知道是一个大整数,这是一个问题,但如何在脚本中获得正确的值?

您是正确的:您得到了一个浮点不准确错误。请注意,
0.258068*10000000000000000
是浮点,而不是整数

这里有一个解决方案:

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
参考文献:


您从何处获得“正确值”?正确值错误,返回值为correct@MehdiBounya如果在394d77a8be54020上反向执行hexdec,则该值将以32个数字结尾,并且0.258068*10000000000000000000000防御代码中没有32个数字end@MehdiBounya预期结果是正确的。您弄错了。这不是
25806800000030
;-)不管怎样,没有造成伤害。一句话:当操作数之间的数量级如此不同时,我们不能期望浮点运算的准确性(而且FP运算本质上是精确的,你知道的)。哇,非常感谢,伙计,我在过去的5个小时里一直在努力解决这个问题。感谢X1000,但是,对于这个echo dechex(bcmul(20,10000000000000000));结果也是坏的
dechex
takes和integer,并且
20x1000000000000000000
溢出一个整数。你到底想在这里实现什么?您可能需要编写自己的任意长度dex2hex转换器。也就是说,你首先需要做什么?为什么您需要将这些大数值转换为十六进制呢?使用php函数文档中的dechex解决了这个问题,谢谢。我正在使用它与以太坊json rpc交互。