Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Muita gente que tá começando a mexer com Java fica travada na hora de fazer a conversão de double ou float pra int.
A verdade é que é bem simples, mas a gente precisa entender que essas variáveis de ponto flutuante representam valores que podem perder precisão ao serem convertidos. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Para fazer isso de forma segura e clara, o ideal é usar o método Math.round(), que arredonda para o inteiro mais próximo, ou então fazer uma conversão direta com casting, como (int) minhaVariavel. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Por exemplo:
double valorDouble = 5.67. int valorInteiro = (int) valorDouble. // corta a parte decimal
Se você preferir arredondar, algo assim funciona:
int valorArrendondado = (int) Math.round(valorDouble). Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Fazendo assim, fica fácil manipular esses números, sem ficar travado na matemática por trás. Você costuma usar alguma dessas estratégias no seu código? Ou tem alguma dúvida mais específica? Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
O ponto que eu vejo é cuidado com o valor que pode ser maior que o limite do int, né? Se for um double gigante, aí complica. Penso que a validação antes de converter é essencial.
No meu time, a galera geralmente usa o Math.round pra evitar surpresas com arredondamento. Mas sempre fica a dúvida se o casting direto não pode gerar perda de informação, né?
Exato, Diego. Antes de fazer a conversão, eu sempre verifico se o valor tá dentro do range do int pra evitar bugs difíceis de rastrear depois.
A minha dúvida sempre é se ao fazer o cast direto eu não perco alguma precisão que possa impactar depois na lógica do sistema. Valeu a dica do Math.round, ajudou pra cacete.