Tôi muốn kiểm tra cụ thể xem một số cụ thể có chứa ".5"Cách kiểm tra xem số có số thập phân không?
Tôi chỉ xử lý toàn bộ số và một nửa (0,5, 1, 1,5, v.v.).
Tôi muốn kiểm tra cụ thể xem một số cụ thể có chứa ".5"Cách kiểm tra xem số có số thập phân không?
Tôi chỉ xử lý toàn bộ số và một nửa (0,5, 1, 1,5, v.v.).
myValue == myValue.floor
hoặc nếu bạn thực sự muốn kiểm tra đặc biệt cho 0,5, 1,5 v.v.
myValue - myValue.floor == 0.5
(2.50).to_s.include?('.5') #=> true
(2).to_s.include?('.5') #=> false
Hãy thử
n = 1.5
# => 1.5
n - Integer(n) == 0.5
# => true
Luôn luôn sử dụng BigDecimal
để kiểm tra các phần phân đoạn của một số để tránh floating point errors:
require 'bigdecimal'
BigDecimal.new(number).frac == BigDecimal("0.5")
Ví dụ:
BigDecimal.new("0.5").frac == BigDecimal("0.5")
# => true
BigDecimal.new("1.0").frac == BigDecimal("0.5")
# => false
Và một giải pháp tổng quát hơn để xem nếu một số là toàn bộ:
BigDecimal.new("1.000000000000000000000000000000000000000001").frac.zero?
# => false
Tốt để giới thiệu thư viện mới. :) –
4 downvotes mà không một lời nhận xét? – Stefan