似乎hexdec会自动向下舍入。我想避免它。我该怎么做?我使用PHP7。
<?php
$hex = '0x6252f8774def5e344';
$decimal = hexdec($hex);
echo $decimal; // 1.1335997368159E+20
result:113359973681590000000
expect:113359973681592656708
更新1
这可能是类似的问题。 Large hex values with PHP hexdec
更新2(备忘录给我)
伊万提到了gmp,以下数学扩展可能会有用。
答案 0 :(得分:1)
您应该使用GMP functions:
GMP gmp_init(混合$ number [,int $ base = 0])
对于你的问题:
echo gmp_init ( '6252f8774def5e344',16);
此base_convert('6252f8774def5e344', 16, 10)
之类的解决方案无法正常工作=&gt;
php.net: base-convert
由于与内部&#34; double&#34;相关的属性,base_convert()可能会丢失大数字的精度。或者&#34;浮动&#34;使用的类型。有关更多具体信息和限制,请参阅手册中的浮点数部分。