2013-04-18 69 views

Trả lời

20

% nên làm việc

variable % 1 != 0

Kiểm tra này fiddle

Edit: Đây là một rubyfiddle

+0

Nó hoạt động nếu chỉ có số và nửa số – Melki

+0

@Melki xin lỗi tôi đã không theo dõi bạn – karthikr

+0

@ karthilkr Anh ấy chỉ muốn số có '.5' nếu bạn chọn' a = 1.2' bạn sẽ có '1.2% 1! = 0 'nhưng không có' .5' trong '1.2' – Melki

7

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

+0

Ha, câu trả lời của bạn thậm chí không yêu cầu kiến ​​thức về ruby. xD +1 – noMAD

+1

Nổi không chính xác: '1.3 - 1 == 0.3 # => false' – Stefan

+0

1.5 - 1 == 0.5 mặc dù, như được hỏi trong câu hỏi – paul

2
(2.50).to_s.include?('.5') #=> true 
(2).to_s.include?('.5') #=> false 
-1

Hãy thử

n = 1.5 
# => 1.5 

n - Integer(n) == 0.5 
# => true 
8

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 
+0

Tốt để giới thiệu thư viện mới. :) –

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