Attualmente sto convertendo un algoritmo da Java a Ruby, e ho riscontrato un po 'di intoppo con la mancanza di un intero traboccante in Ruby.Come si emula l'overflow dei numeri interi su una variabile Fixnum?
dire che ho un valore 2.663.860,877 mila, questo è più grande il numero intero massimo 2147483648.
In Java, si avvolge intorno e mi dovrebbe ottenere -1.631,106419 millions.
ho trovato questo pezzo di codice, ma non sembra funzionare:
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
And'ing la variabile non forzarlo negativo come ci si aspetterebbe.
Si potrebbe prendere in considerazione ri-implementazione dell'algoritmo nel suo insieme, invece di cercare di traslitterare Java a Ruby. I numeri in Ruby sono numeri, non sono un contenitore conveniente per una sequenza di bit. –