2015-01-22 39 views
7

Làm thế nào để có được giá trị tối thiểu và tối đa của mỗi loại trong thuốc an thần? ví dụ như một số nguyên, float và chiều dài tối đa có thể có của một chuỗi.Làm thế nào để có được giá trị tối thiểu và tối đa của mỗi loại trong elixir

Tôi biết rằng trong C được xác định trong limits.hINT_MIN, INT_MAX và cứ tiếp tục như vậy. Trường hợp tài liệu về giới hạn của các loại đó trong thuốc an thần?

Trả lời

12

Elixir (Erlang thực) sử dụng bignum arithmetic, mà là một loại arithmentic được sử dụng trong khoa học máy tính ở đâu (trích dẫn Wikipedia)

tính toán được thực hiện trên số có chữ số chính xác chỉ được giới hạn bởi bộ nhớ có sẵn của hệ thống máy chủ

Có tài liệu Erlang nói về giới hạn của máy ảo Erlang (ví dụ: nguyên tử có thể có tối đa 255 ký tự); như bạn có thể thấy nếu bạn xem xét trang đó, giới hạn số nguyên thậm chí không được đề cập.

Các số nguyên trong Erlang/Elixir chỉ bị giới hạn bởi bộ nhớ có sẵn trên hệ thống, vì vậy hầu như không có không giới hạn số lượng chúng có thể lớn đến mức.

Đối với mã nhị phân (chuỗi), tôi sẽ chỉ trích những gì trang tôi liên kết ở trên nói:

Trong việc thực hiện 32-bit của Erlang, 536.870.911 byte là nhị phân lớn nhất có thể được xây dựng hoặc đối sánh sử dụng cú pháp bit. (Trong thực thi 64 bit, kích thước tối đa là 2305843009213693951 byte.) Nếu vượt quá giới hạn, việc xây dựng cú pháp bit sẽ thất bại với ngoại lệ system_limit, trong khi bất kỳ nỗ lực nào khớp với một tệp nhị phân quá lớn sẽ không thành công. Giới hạn này được thực thi bắt đầu với bản phát hành R11B-4; trong các bản phát hành trước đó, các hoạt động trên các tệp nhị phân quá lớn nói chung sẽ không thành công hoặc cho kết quả không chính xác. Trong các phiên bản tương lai của Erlang/OTP, các hoạt động khác tạo các tệp nhị phân (chẳng hạn như list_to_binary/1) có thể cũng sẽ thực thi cùng một giới hạn.

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