PHP中有關長整數的操作

來源:互聯網
上載者:User
本篇文章給大家分享的內容是關於PHP中有關長整數的操作 ,有著一定的參考價值,有需要的朋友可以參考一下

在PHP,數字類型只有int和float兩種,它們的位元取決於系統,而且沒有uint,所以跟其它系統通訊的時候就有諸多不便。如果int溢出,則自動轉換為float,用科學計數法來表示,並且小數點後只保留15位,之後的資料被四捨五入,這將對接下來的資料操作產生影響,比如說進位轉換,進行運算等等都會出錯。

對於PHP有:

int : min~max: -9223372036854775808 ~ 9223372036854775807(~92億億)

float : min~max: -1.7976931348623E+308 ~ 1.7976931348623E+308(~1.8E308)


在這個時候我們就需要考慮用字串形式來進行相關處理,如果一定要進行數學計算,就要用到BC Math(任意精度數學) Functions,在PHP手冊中可以自行查閱:http://php.net/manual/zh/function.bcmod.php

此處舉一個將長整數轉化為二進位的簡單例子,將2^128轉化為二進位:由於php的進位轉換函式也是有最大值限制的,所以在這裡採用短除法,來轉化為二進位,採用原始函數pow求冪次


其輸出結果如下,很顯然精度不夠,並且二進位是錯誤的

正確表示:


輸出結果:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.