Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida sobre float

Pelo que entendi, dos tipos primitivos apenas o float precisa ser atribuido com a letra f no final, por ex.:

float a = 2.5f;

Pois o double já identifica qualquer número com ponto flutuante como double, e o long aceita inteiro por ser um tipo de menor precisão, porém o float é de menor precisão que o double, e números com pontos flutuantes sem especificar nenhuma letra por padrão são double, está correto?

3 respostas

Rodrigo, errado mano, pois Double e Long também precisa da letra no final, se for tipo Primitivo, Exemplo.

private Long codigo = 1L;
private Double valor = 85D;

Essas variavel do tipo Primitivo tem que por essas letras. Porem se você colocar elas com o nome minusculo inicial, não será precisa essas letras.

private long codigo = 1;
private double valor = 85;

Porem se voce quiser PRECISÃO com numeros, aconselho a usar o BigDecimal, essa classe foi feito para trabalhar com numeros, valores etc...

solução!

Bom dia Rodrigo.

Quando você atribui um número decimal a uma variável primitiva o compilador entende esse número como um double. Então se você entrar com 5.0, 45.5, qualquer número com ponto flutuante, este será um double, e como double é maior do que float se fizer:

float f = 5.0;

Está falando para o compilador que quer colocar um literal double em um float e isso ele não deixa! Mas como você sabe que na verdade o valor 5 cabe em um float você faz um cast:

float f = (float)5.0;

ou para simplificar :

float f = 5.0f;

Já no caso do long, todo número que entrarmos sem ponto flutuante é um int, então se fizermos:

long l = 10000000000;

O compilador fala que o número 10000000000 é muito grande para um int, mas novamente, como você sabe que esse numero é para um long e cabe em um long, deve deixar explícito com o l:

long l = 10000000000l;

Valeu Guilherme, era isto mesmo, então estava correto o pensamento. Obrigado.