HOWTO · Java

Converter Double to Int em Java

Este artigo apresenta como converter double para inteiro em Java.

Nesta página

Para converter um double de Java em um int, use (int) value quando quiser truncar em direção a zero, (int) Math.round(value) quando quiser o número inteiro mais próximo ou value.intValue() quando o valor for um objeto Double. Por exemplo, para 12.9, o cast e intValue() produzem 12, enquanto arredondar e depois converter produz 13.

Escolha o método conforme o comportamento desejado: o cast é a opção mais simples para truncar, Math.round() arredonda para o inteiro mais próximo e Double.intValue() é útil quando você já tem um objeto wrapper. Nos exemplos abaixo, cada método resulta em um int; a chamada a Math.round() retorna um long antes do cast explícito.

Como converter double em int em Java usando cast explícito

Um cast converte um double primitivo no tipo primitivo int. Java trunca a parte fracionária em direção a zero; não arredonda para baixo. Por exemplo, 12.9 se torna 12. A conversão também pode causar perda de informação, pois um int não conserva a parte fracionária. Consulte o guia de conversão de tipos em Java para entender melhor a diferença entre conversões de ampliação e de redução. Não há um destino localizado disponível para pt; por isso, o link mantém o destino original em inglês.

A sintaxe é (int) doubleValue. Veja um exemplo completo, que você pode executar e salvar como DoubleToIntConversion.java:

Execute este exemplo:

public class DoubleToIntConversion {
    public static void main(String[] args) {
        double value = 12.9;
        int result = (int) value;
        System.out.println("double: " + value);
        System.out.println("int: " + result);
    }
}

A saída de execução fornecida confirma que o exemplo produz 12 como resultado do tipo int. A conversão trunca em direção a zero tanto para valores positivos quanto negativos; por exemplo, -12.9 se torna -12, e não -13.

Como converter double em int em Java usando o método round()

Use Math.round() quando quiser o inteiro mais próximo, em vez de truncar. Para um argumento double, Math.round() retorna um long; portanto, faça um cast explícito se o destino precisar ser int: (int) Math.round(value). Por exemplo, 12.9 é arredondado para 13, enquanto 12.3 é arredondado para 12.

O cast para int tem suas próprias regras de faixa. Se o long arredondado estiver fora da faixa de int, a conversão não gera um erro; o resultado segue as regras de conversão de redução do Java. Mantenha o valor em um long se o resultado completo puder ultrapassar a faixa de int.

Veja um exemplo completo, que você pode executar e salvar como RoundDoubleToInt.java:

public class RoundDoubleToInt {
    public static void main(String[] args) {
        double value = 12.9;
        long rounded = Math.round(value);
        int result = (int) rounded;
        System.out.println("double: " + value);
        System.out.println("rounded long: " + rounded);
        System.out.println("int: " + result);
    }
}

A saída de execução fornecida confirma que Math.round() produz 13L, que depois é convertido no valor 13 do tipo int.

Como converter double em int em Java usando o método intValue()

intValue() é um método de instância da classe wrapper Double, não do tipo primitivo double. Chame-o em um objeto Double para obter um int. Assim como um cast de tipo primitivo, ele trunca em direção a zero em vez de arredondar; portanto, um Double que contém 12.9 resulta em 12.

A sintaxe é wrapper.intValue(). Ao atribuir um valor, Java pode converter automaticamente um double primitivo em um Double, como mostrado a seguir. Salve este programa completo como DoubleWrapperToInt.java:

public class DoubleWrapperToInt {
    public static void main(String[] args) {
        Double value = 12.9;
        int result = value.intValue();
        System.out.println("Double: " + value);
        System.out.println("int: " + result);
    }
}

A saída de execução fornecida confirma que Double.intValue() resulta em 12 para 12.9.

Se o próximo passo for analisar texto, em vez de converter um valor numérico existente, consulte como converter uma string hexadecimal em int em Java.