2016-12-03 242 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是位置的數量,直到你想要精確