Integer e float: dois tipos de número

Prévia grátis 3 min de leitura

Nem todo número é o mesmo tipo de número

5 e 5.0 são o mesmo valor na matemática. No Ruby, são tipos diferentes de objeto.

5.class      # => Integer
5.0.class    # => Float

Integer guarda números inteiros exatos, sem ponto decimal: 5, -12, 1000. Float guarda números com ponto decimal, como 5.0, 3.14 e -0.5, aproximando números reais como o visor de uma calculadora. O literal decide qual você recebe. Escreva um ponto decimal e recebe um Float; deixe de fora e recebe um Integer.

Por que a distinção existe

A divisão reflete como esses números se comportam. Itens num carrinho, um número de página ou uma contagem de dias são quantidades inteiras exatas, então Integer serve. Um preço com centavos, uma média ou uma porcentagem precisa de frações, então Float serve. Escolher o certo desde o início evita as duas surpresas das próximas duas aulas: divisão inteira e imprecisão de ponto flutuante.

Aritmética mistura naturalmente

Combine um Integer e um Float e você recebe um Float. O Ruby promove o tipo mais limitado para combinar com o mais amplo, sozinho.

5 + 2       # => 7,   Integer + Integer = Integer
5 + 2.0     # => 7.0, Integer + Float = Float
5.0 + 2     # => 7.0, Float + Integer = Float, mesma coisa em qualquer ordem

Você nunca declara a conversão. O Ruby descobre o tipo do resultado pelos valores, o espírito sem cerimônia do curso Variáveis e atribuição.

Convertendo deliberadamente

Dois métodos convertem de forma explícita. Eles são primos do to_s e do to_sym do curso passado.

5.to_f      # => 5.0, de Integer para Float
5.9.to_i    # => 5, de Float para Integer, a parte decimal é simplesmente descartada, não arredondada

Repare no último. to_i trunca: corta tudo depois do ponto decimal em vez de arredondar. 5.9.to_i é 5, não 6. A aula 4 cobre round, que arredonda.

O que este curso cobre

  • Aula 1, Integer e Float: dois tipos de número, e por que a distinção importa (você está aqui)
  • Aula 2, Divisão inteira: a surpresa numérica mais comum do Ruby
  • Aula 3, Precisão de float: por que 0.1 + 0.2 não é bem 0.3
  • Aula 4, Métodos numéricos: round, abs, even? e outras ferramentas do dia a dia
  • Aula 5, Valores booleanos: true e false, e nada no meio
  • Aula 6, Truthiness: o que conta como "verdadeiro o bastante" numa condição
  • Aula 7, Juntando tudo: um pequeno desafio combinando números e booleanos

No final, você vai saber de qual tipo um valor deve ser e o que acontece quando os dois se misturam.

Aula 1 de 7 · grátis

Continue com a aula 2

Divisão inteira: o gotcha clássico

Mostra por que dividir dois Integer descarta a fração, como obter resultado fracionário e o que % devolve.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...