2015年4月25日 星期六

【筆記】在PHP中太長的數字以科學符號(scientific notation)顯示的解決方案

寫過PHP的人一定遇到,過長的數字echo出來後,非所預期地以科學符號顯示的問題,如:
$f1 = 201504242111234; 
$f2 = 201504191213211;

echo $f1 . ',' . $f2;
一般預期的結果應該為:
201504242111234,201504191213211
但實際上,結果可能為:
2.0150424211123E+14,2.0150419121321E+14
這時若只是要在網頁上顯示所要的格式,可以使用printf(文件)這個方法,它的用法是:
int printf ( string $format [, mixed $args [, mixed $... ]] )
其中,第一個參數為要印出的格式設定,詳細說明可以參考這裡

據此,可以把上面echo的這一行替換成下面程式:
printf('%.0f,%.0f', $f1, $f2);
這裡%.0f的意思是說,以浮點數的格式去顯示後面傳入的參數,在其中的0是指小數點後要顯示的位數為「0」。

另外,因為%.0f有兩個,後面要傳入對應的兩個浮點數。

有時,在一些情況下需要在程式中將兩個浮數數串在一起,好讓後面的程式使,這時就要使用到sprintf(文件)這個方法:
string sprintf ( string $format [, mixed $args [, mixed $... ]] )
從上面可以看到,它回傳的是一個字串,所以可以這樣使用:
$s1 = sprintf('%.0f', $f1);
$s2 = sprintf('%.0f', $f2);

$s3 = $s1 . ',' . $s2;

//$s3有可能有其他如做為SQL的運用
//這裡僅把它印出來
echo $s3;

沒有留言: