Câu trả lời:
Đó là phân chia số nguyên. Bạn có thể tạo một trong các số a Floatbằng cách thêm .0:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_ftrả lời sẽ tốt hơn nếu bạn chia hai biến có chứa số nguyên, vd a.to_f / b. Nếu bạn thực sự chia hai số nguyên được mã hóa cứng (có thể là lạ), thì việc sử dụng 9.0 / 5là ổn.
Đó là phân chia số nguyên. Bạn có thể sử dụng to_fđể buộc mọi thứ vào chế độ dấu phẩy động:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Điều này cũng hoạt động nếu giá trị của bạn là biến thay vì bằng chữ. Chuyển đổi một giá trị thành float là đủ để ép buộc toàn bộ biểu thức thành số học dấu phẩy động.
Ngoài ra còn có Numeric#fdivphương pháp mà bạn có thể sử dụng thay thế:
9.fdiv(5) #=> 1.8
Bạn có thể bao gồm các mathnmô-đun ruby .
require 'mathn'
Bằng cách này, bạn sẽ có thể thực hiện phân chia bình thường.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
Theo cách này, bạn có được phép chia chính xác (lớp Rational) cho đến khi bạn quyết định áp dụng một hoạt động không thể được biểu thị như một lý do, chẳng hạn Math.sin.
Thay đổi 5thành 5.0. Bạn đang nhận được số nguyên.
Fixnum # to_r không được đề cập ở đây, nó được giới thiệu từ ruby 1.9. Nó chuyển đổi Fixnum thành dạng hợp lý. Dưới đây là ví dụ về việc sử dụng nó. Điều này cũng có thể phân chia chính xác miễn là tất cả các số được sử dụng là Fixnum.
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
Ví dụ trong đó một float hoạt động trên một số hữu tỷ bao phủ kết quả để nổi.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; endtrả về kết quả tính toán từ phương thức, vì biểu thức cuối cùng trong lệnh gọi phương thức là giá trị trả về.