On continue l’exploration du module Kernel avec quatre autres méthodes de conversions, pour les nombres:

  • Complex
  • Float
  • Integer
  • Rational

Voyons d’abord Integer. On peut lui passer une chaîne de caractère:

>> Integer("123")
123

Ça fonctionne avec les préfixes. En octal, hexadécimal et binaire:

>> Integer("0123")
83
>> Integer("0x123")
291
>> Integer("0b111")
7

On peut aussi spécifier la base:

>> Integer("0123", 10)
123

On peut aussi passer en argument un objet répondant à to_int ou to_i:

>> class Foo
>>   def to_i
>>     123
>>   end
>> end
nil
>> Integer(Foo.new)
123

Passons maintenant à Float(arg) qui convertit un argument en type Float. Soit l’argument est de type Numeric:

>> Float(123)
123.0
>> Float(Rational("1/2"))
0.5

Soit la méthode fait appel à to_f:

>> class Foo
>>   def to_f
>>     1.23
>>   end
>> end
nil
>> Float(Foo.new)
1.23

Au tour de la méthode Rational qui convertit son (ses) argument(s) en un nombre rationnel (de classe Rational), autrement dit une fraction:

>> Rational("1/3")
1/3
>> Rational(1, 3)
1/3
>> x = Rational("1/3")
1/3
>> x + x
2/3

Reste la méthode Complex, qui convertit son (ses) argument(s) en un nombre complexe. Je la signale pour être exhaustif, mais les nombres complexes dépassent largement mes compétences en mathématique.

À demain.