2016-12-03 241 views
0

我正在努力解决一个字符串值为'62.5816993713379'的问题,该问题在尝试转换为浮点值时给了我一个不同的结果。将字符串转换为浮点数

请考虑下面的代码:

<?php 

$str = '62.5816993713379'; 

echo floatval($str); 

它返回我62.581699371338,而不是62.5816993713379

例子:http://codepad.org/WKeLwq7h

有人可以帮我解决这个问题?

问候

+2

http://stackoverflow.com/questions/588004/is-floating-point-math-broken – 2016-12-03 02:24:10

回答

0

因为有浮点不能代表所有的十进制数,它具有在所述范围。有两种解决方案:

  • 将您的值保留为字符串并使用BC Math Function进行计算。
  • 增加ini_set('precision', 18);和十字指头,它可以精确地表示您以前超出其范围的号码。
0

您可以使用此

$str = '62.5816993713379'; 
echo sprintf ("%.14f", floatval($str)); 

14F是位置的数量,直到你想要精确