2010-07-26 11 views
4

什麼是PHP的命令做類似於intval()但小數?PHP:intval()爲小數?

例如,我有字符串「33.66」,我想在將它發送到MSSQL之前將它轉換爲十進制值。

謝謝。

回答

10

floatval()怎麼樣?

$f = floatval("33.66"); 

您可以通過使用鑄造函數調用,而不是剃掉類型轉換的幾納秒。但這是微型優化領域,所以除非每秒執行數百萬次這些操作,否則不要擔心。

$f = (float) "33.66"; 

我還推薦學習如何使用sscanf(),因爲有時候這是最方便的解決方案。

list($f) = sscanf("33.66", "%f"); 
+0

謝謝!我要去鑄造。 – johnshaddad 2010-07-26 23:16:12

+1

sscanf復活我的8歲C生活xD再次感謝 – johnshaddad 2010-07-26 23:26:48

0

您可以嘗試floatval,但浮動物可能有損耗。

您可以嘗試通過sprintf運行號碼以使其更加正確的格式。格式字符串%.2f將生成帶有兩位小數的浮點格式數字。多餘的地方變圓。

我不確定sprintf是否會將該值轉換爲內部格式化的浮點數,因此有損問題可能仍然存在。這就是說,如果你只擔心小數點後兩位,你應該不會擔心精度損失。

+0

謝謝,我正在鑄造它 – johnshaddad 2010-07-26 23:17:02

3

如果你的意思是一個float:

$var = floatval("33.66") 

或者

$var = (float)"33.66"; 

如果你需要一個小數的準確精度,有沒有這樣的類型在PHP。有Arbitrary Precision Mathematics擴展名,但它會返回字符串,因此它在執行計算時僅適用於您。

-1

php是一種鬆散類型的語言。不要緊,如果你有

$ x = 33.66;

$ X = 「33.66」;

無論發送給mssql都是一樣的。

你只是想確保它格式正確,或者是一個實際的浮動?

+0

嗯,事實證明,我有雙引號括起來之前單引號。這就是MSSQL拒絕它的原因xD謝謝你的提示。 – johnshaddad 2010-07-26 23:18:38

+0

並且MySQL也會執行字符串<->數字轉換。這並不總是一個好主意。 – staticsan 2010-07-26 23:43:45