[英]PHP: Converting a 64bit integer to string
我正在嘗試在字符串變量中使用硬編碼的64位整數。
Simplfied我想做這樣的事情:
$i = 76561197961384956;
$s = "i = $i";
哪個應該導致s
:
i = 76561197961384956
這顯然不適用於PHP將大整數浮動,因此s
是:
i = 7.65611979614E+16
雖然其他幾個方法如cast等失敗,但我找到了number_format()
並使用它:
$s = "i = " . number_format($i, 0, '.', '');
但這導致s
:
i = 76561197961384960
看起來像一個近似問題,但如何解決這個問題?
你失去了賦值的精度,而不是字符串轉換。 如果這個變量的值實際上是硬編碼的,而你無法改變它,那么你無能為力。
像這樣的一行:
$i = 76561197961384956;
總會失去精確度。 如果您需要保留整個內容,將其存儲到字符串中,則不能將其存儲為類似的int並保留所有數字。
現在只有在php中進行大整數數學的方法是使用bcmath或gmp擴展來處理大數字作為字符串。 在php6中計划64位整數。
因此,當使用大整數將它們轉換為字符串時,或者在分配時會丟失精度(自動轉換為浮動),然后使用字符串數學庫來進一步處理您的數字。
你嘗試過使用PHP的intval()函數嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.