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 Float
bằng cách thêm .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
trả 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 / 5
là ổ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#fdiv
phươ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 mathn
mô-đ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 5
thà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; end
trả 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ề.