簡體   English   中英

PHP:將64位整數轉換為字符串

[英]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並保留所有數字。

我認為唯一的方法是使用bcmath函數。

對於任意精度數學,PHP提供二進制計算器,它支持任何大小和精度的數字,表示為字符串。

這是你的$i錯了,而不是字符串轉換 - PHP內部使用32位整數。

現在只有在php中進行大整數數學的方法是使用bcmath或gmp擴展來處理大數字作為字符串。 在php6中計划64位整數。

因此,當使用大整數將它們轉換為字符串時,或者在分配時會丟失精度(自動轉換為浮動),然后使用字符串數學庫來進一步處理您的數字。

你嘗試過使用PHP的intval()函數嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM