38

NaN ile ilgili birkaç yazı okudum ama Ruby on Rails ile nasıl başa çıkacaklarını anlamadım. NaN ise bir değeri kontrol etmek istiyorum Sıfır (0) ile değiştirmek istiyorum. Ben yüzde NaN sahip olduğunda aşağıdakiraylar üzerinde yakut NaN ile nasıl başa çıkmak

logger.info(".is_a? Fixnum #{percent.is_a? Fixnum}") 

beni false döndürür çalıştı.

ben kaydedici

logger.info("Fixnum #{percent.is_a? Fixnum} percent #{percent}") 

Çıktı

Fixnum false percent 94.44444444444444 
Fixnum false percent NaN 
Fixnum false percent 87.0 

cevap

76

NaN yılında birkaç değişiklik yaptık Float örneğidir. Float#nan? yöntemini kullanın.

>> nan = 0.0/0 # OR nan = Float::NAN 
=> NaN 
>> nan.class 
=> Float 
>> nan.nan? 
=> true 
>> nan.is_a?(Float) && nan.nan? 
=> true 
>> (nan.is_a?(Float) && nan.nan?) ? 0 : nan 
=> 0 

GÜNCELLEME

NaN could also be an instance of BigDecimal:

((nan.is_a?(Float) || nan.is_a?(BigDecimal)) && nan.nan?) ? 0 : nan 

veya

{Float::NAN => 0, BigDecimal::NAN => 0}.fetch(nan, nan) 
Ayrıca sabit olarak tanımlanmış oluyor
+2

: 'Float :: NAN # => Nan' – steenslag

+0

@steenslag Bunu bilmiyordum. Yorum için teşekkürler. – falsetru

+2

Standart kitaplık ile çalışıyorsanız, 'NaN'' BigDecimal' örneğinin de olabilir. – chipit24

İlgili konular