Tôi muốn thực hiện một lớp BigInt sẽ có thể xử lý các số thực sự lớn. Tôi chỉ muốn thêm và nhân số, tuy nhiên lớp cũng nên xử lý các số âm.Tôi nên sử dụng cấu trúc dữ liệu nào cho lớp BigInt
Tôi muốn đại diện cho số dưới dạng chuỗi, nhưng có một chi phí lớn với chuỗi chuyển đổi thành int và back để thêm. Tôi muốn thực hiện bổ sung như trên trường trung học, thêm thứ tự tương ứng và nếu kết quả lớn hơn 10, thêm carry vào thứ tự tiếp theo.
Sau đó, tôi nghĩ rằng nó sẽ là tốt hơn để xử lý nó như là một mảng unsigned dài dài int và giữ cho các dấu hiệu cách nhau bằng bool. Với điều này tôi sợ kích thước của int, như C + + tiêu chuẩn như xa như tôi biết đảm bảo rằng int < float < đôi. Đúng nếu tôi sai. Vì vậy, khi tôi đạt đến một số số tôi nên di chuyển trong mảng về phía trước và bắt đầu thêm số vào vị trí mảng tiếp theo.
Có cấu trúc dữ liệu nào phù hợp hoặc tốt hơn cho điều này không?
Âm thanh như một sự triển khai hợp lý với tôi. Nhưng nếu bạn đang sử dụng ULONG, mỗi phần tử trong mảng có thể chứa một giá trị từ 0 đến 2^32-1 thay vì từ 0 đến 10. Điều đó sẽ giúp bạn tiết kiệm một vài byte. :-) –
Tiêu chuẩn chỉ đảm bảo 'float <= double' (lưu ý dấu bằng) – ipc
Vâng đó chính là ý của tôi. Nhưng là 2^32-1 tương tự trên linux và trên solaris? Tương ứng là kích thước đảm bảo ở khắp mọi nơi? Quan điểm của tôi là, ví dụ tôi nhận được số MyBigIntClass = "234567434256547"; , và tôi bắt đầu chuyển đổi số chuỗi này thành biểu diễn bên trong của tôi trong lớp được gán dài dài int (có thể :-)), và sau khi số đạt đến 2^32, tôi di chuyển đến vị trí khác trong mảng. Nó có đúng không? – user1086004