2010-09-18 44 views
10

thể trùng lặp:
Working with large numbers in PHP.Số nguyên cực kỳ lớn trong PHP

tôi chạy một ứng dụng Facebook hoàn toàn vô dụng. Tôi đang gặp vấn đề với sự hỗ trợ của PHP cho các số nguyên. Về cơ bản, người dùng tự cho mình số điểm vô lý. "Vị vua" hiện tại có 102.000.000.000.000.000.000.000.000,00.000.000.002.557.529.927 điểm.

PHP dường như không hoạt động tốt với số nguyên lớn. Khi ai đó cố gắng để thêm nhiều hơn một số tiền nhất định của điểm nó sẽ thất bại vì PHP xử lý những con số đó là vô hạn.

Có thư viện toán học nào để làm việc với số lượng lớn không? Tôi có nên coi các con số là chuỗi và viết của riêng mình không?

Chúng tôi đang nói các số có 2^20 chữ số dài hoặc dài hơn. Họ không cần phải chính xác (bất kỳ lỗi nào được bôi lên đến chất lượng thấp của ứng dụng nói chung) cũng không cần phải có hiệu suất cao. Tôi chỉ cần một cái gì đó cho phép số lượng dài hơn nhiều.

(Đối với những người bạn của những người tò mò, chúng tôi lưu trữ số của chúng tôi trong đám mây, vì vậy chi phí lưu trữ không phải là một vấn đề rất lớn.)

+27

'Tôi chạy một ứng dụng facebook hoàn toàn vô dụng'. Bạn không nói? Có loại nào khác không? – aaronasterling

+1

2^20 chữ số? Bạn đang đối phó với những con số có hơn một triệu chữ số? Bạn có thể cần phải bắt đầu lo lắng về chi phí lưu trữ. –

+0

"Đối với những người bạn tò mò, chúng tôi lưu trữ số của chúng tôi trên đám mây, do đó, chi phí lưu trữ không phải là vấn đề lớn". ;) Ngoài ra, chúng tôi đang nói 60 người dùng hoạt động. –

Trả lời

9

PHP sử dụng phao, hoặc ký ints 32-bit để lưu trữ số. Rõ ràng điều này là không đủ. Bạn có thể sử dụng số học chính xác tùy ý để lưu trữ những số lớn này. Xem cuốn sách PHP trên BC Math để biết thêm thông tin:

http://php.net/manual/en/book.bc.php

5

Hai thư viện PHP để làm việc với một số lượng lớn là BC MathGMP.

+2

GMP đã hạn chế tôi đến 10^50 khi tôi thêm số. Tôi có thể lưu trữ bất cứ điều gì tôi muốn, nhưng nó sẽ nắp ở 10^50 nếu tôi đã cố gắng để thêm. Tôi sẽ thử BC Math. –

Các vấn đề liên quan