2011-03-17 74 views
7

假設我有一個字符串,其中包含「7.2769482308e + 01」(該數字來自第三方軟件,我無法控制格式)。將呈現爲字符串的指數數字轉換爲小數

什麼是最便宜的方法將其轉換成十進制72.769482308

我能想到的唯一解決方案是分割十進制+指數部分並使用乘法。但可能在那裏建立它的功能做同樣的事情?

備註:夥計們,是的,我讀過Convert exponential to a whole number in PHPConvert exponential number to decimal in php。這個問題是無關緊要的,因爲他們已經有一個數字,但我有一個字符串

回答

13

如何將簡單轉換爲浮點值?

$string = "7.2769482308e+01"; 
$float = (float) $string; 
+0

大聲笑,非常簡單......從來不知道PHP可以識別鑄造字符串指數格式。此行爲是否記錄在案? – zerkms 2011-03-17 14:21:59

+1

@zerkms是的。 http://php.net/manual/en/language.types.string.php#language.types.string.conversion和http://php.net/manual/en/language.types.float.php – Wiseguy 2011-03-17 14:23:10

+0

是的,文檔中存在以下內容:http://ru.php.net/manual/en/language.types.string.php#language.types.string.conversion – zerkms 2011-03-17 14:23:18

5

我不得不使用它最初是由this question提供number_format(1.2378147769392E+14, 0, '', '')成功。

這也適用於值爲字符串時,如下所示:number_format("1.2378147769392E+14", 0, '', '')。來吧,試試吧。

+0

沒有答案。我有**字符串**(這就是爲什麼我強調它),請再次仔細閱讀問題。請刪除它或我會downvote – zerkms 2012-06-13 20:13:58

+3

哎喲,苛刻的話......你甚至嘗試過嗎?因爲當這個值是,而且不是一個字符串時,它就會起作用。 – jwhat 2012-06-14 00:59:31

+0

任何理由都可以通過一個幾乎縮短兩倍和更具可讀性的解決方案:'(float)$ string'? PS:它們並不苛刻,它在初始版本PPS中不是一個答案:'number_format'接受數字作爲第一個參數,所以字符串被隱式轉換PPPS:結果是一個字符串,所以需要另一個轉換執行得到小數點/浮點數 – zerkms 2012-06-14 02:52:06

0

這裏是一個非常便宜的一個:$float = "7.2769482308e+01" + 0;