2009-03-15 40 views
5

Có thể lưu trữ một phần nhỏ như 3/6 trong một biến số nào đó không? Khi tôi thử điều này, nó chỉ lưu trữ các số trước /. Tôi biết rằng tôi có thể sử dụng 2 biến và chia chúng, nhưng đầu vào là từ một trường văn bản duy nhất. Đây có phải là ở tất cả có thể?Từ Phân số thành Thập phân và Quay lại?

Tôi muốn làm điều này vì tôi cần tính toán phân số thành tỷ lệ thập phân.

Câu hỏi tiền thưởng;) - Có cách nào dễ dàng để tính giá trị thập phân cho một phân số không? Cảm ơn ..

Trả lời

3

Điều tốt nhất cần làm là triển khai một lớp phân số (hoặc lớp số hợp lý). Thông thường nó sẽ mất một tử số và mẫu số và có thể cung cấp một đôi, và làm toán cơ bản với các đối tượng phân số khác. Nó cũng có thể phân tích cú pháp và định dạng phân số.

Rational Arithmetic on Rosetta Code trông giống như một cái gì đó tốt để bắt đầu.

5

Tóm lại, không có cách nào đúng để trích xuất phần gốc ra khỏi số thập phân.

Ví dụ: lấy 5/10

bạn sẽ nhận được 0,5

bây giờ, 0,5 cũng dịch lại 1/2, 2/4, 3/6 vv

Tốt nhất là lưu trữ từng số nguyên riêng biệt và thực hiện phép tính sau này.

3

Tôi e rằng không có bất kỳ câu trả lời dễ dàng nào cho bạn về vấn đề này. Để tạo phân số, bạn sẽ phải chia nhỏ trường văn bản trên '/', chuyển đổi hai nửa thành double s và chia chúng ra. Đối với việc chuyển đổi nó trở lại một phần nhỏ, bạn sẽ phải mở một cuốn sách giáo khoa toán học và tìm ra nó. (Thậm chí tệ hơn, một đôi không thực sự chính xác - bạn có thể nghĩ nó có 0,1 trong nó, nhưng nó thực sự có 0,09999999999999998726 hoặc một cái gì đó như thế, vì vậy bạn sẽ phải chọn độ chính xác và đi cho nó, hoặc viết một số loại phân số lớp học dựa trên một cặp số nguyên.)

1

Có cách nào dễ dàng để tính giá trị thập phân cho một phân số không?

Nếu bạn giới hạn giá trị thập phân của mình thành số thập phân nhất định, bạn có thể tạo bảng tra cứu.

 
0.3333, 1/3 
0.6666, 2/3 
0.0625, 1/16 
0.1250, 1/8 
0.2500, 1/4 
0.5000, 1/2 
0.7500, 3/4 
etc... 

Vì vậy, nếu người dùng nhập 0,5 bạn hãy đặt nó bằng 0 cho đến khi bạn có 4 chữ số thập phân. Sau đó, bạn sẽ sử dụng bảng tra cứu để trả về "1/2". Bảng tra cứu có lẽ nên là một từ điển các loại.

Sẽ không quá khó để ước tính một trong hai. Ví dụ: nếu người dùng nhập 0,0624 bạn có thể dễ dàng chọn giá trị trong bảng gần nhất với số thập phân đó. Trong trường hợp này, nó sẽ trả về "1/16".

Đừng để việc nhập/nhập tập hợp các cặp thập phân/phân số hữu hạn làm bạn sợ (nó thực sự không lớn tùy thuộc vào độ chính xác bạn chọn).

Nếu mọi thứ khác không thành công, tìm kiếm trên google sẽ tiết lộ một thư viện thực hiện việc này cho bạn.

+0

Hrm ... Tại sao các downvotes? – user72491

3

Phương pháp, như đã nói, là lưu trữ tử số và mẫu số, nhiều theo cách bạn có thể viết trên giấy.

cho 'C' sử dụng giao diện

GNU Multiple Precision Arithmetic Library

cho 'hợp lý' trong tài liệu.

+0

Câu hỏi được gắn thẻ C, vâng. Tuy nhiên, tôi nghĩ rằng tác giả đã sai lầm và nghĩ rằng Obj-C và C có liên quan. Tuy nhiên, một câu trả lời hữu ích. +1. – strager

+0

@strager: Mục tiêu-C và C có liên quan, trong đó một là một superset nghiêm ngặt của người khác. GMP có thể được sử dụng với Obj-C, mặc dù nó có thể là quá mức cần thiết cho việc này. –

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