PHP hexdec。如何避免意外的倒圆?

时间:2017-11-22 10:25:59

标签: php

似乎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,以下数学扩展可能会有用。

数学扩展 http://php.net/manual/en/refs.math.php

1 个答案:

答案 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;使用的类型。有关更多具体信息和限制,请参阅手册中的浮点数部分。