Làm thế nào để tiết kiệm 10 ^ 19 trong Julia mà không bị tràn


8

Tôi đang cố gắng lưu số 10 ^ 19 trong một biến trong Julia.

Tôi biết nó đang tràn ra, nhưng tôi đoán rằng làm một cái gì đó như BigInt(10^19)hoặc Int128(10^19)sẽ giải quyết vấn đề nhưng nó không.

Có suy nghĩ gì không?

Xem hành vi tràn cho Julia

Câu trả lời:


13

Julia mặc định số học Int64, do đó, 10 ^ 19 tràn ra làm Int64 mặc định trước khi các dấu ngoặc đơn xung quanh chuyển sang loại lớn hơn. Thử

Int128(10)^20 == BigInt(10)^20 == big"10"^20

big(10)^20cũng hoạt động.
DNF

Chỉ là một nhận xét phụ: Julia có thể đủ thông minh để phát hiện các hằng số phạm vi như 10 ^ 19 phù hợp và sử dụng loại nhỏ nhất đủ lớn để phù hợp với hằng số, hoặc một số phương pháp phỏng đoán khác không thất bại.
Trilarion

Thật vậy, dự đoán của tôi sẽ là kết quả này trong hiệu suất đạt được để họ đẩy nó xuống dòng người dùng.
logankilpatrick

Ít hơn thế, và về mặt khái niệm, theo một cách nào đó, sạch sẽ hơn để có các quy tắc đơn giản như nếu nó trông giống như một int, đó là một int
Oscar Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.