Double num = 1.15 * 100 = 114,9999999999?

Alguem tem alguma explicação ou solução ?

Quando eu uso tipos primitivos só acontece pro 1.12 até o 1.16 … Mas quando utilizo BigDecimal acontece para todos os numeros.

double num = 1.15;
      
System.out.println( num * 100 );

Att,

É assim mesmo, e não tem jeito.

É que outras linguagens (como C e C++, ou mesmo VB ou Delphi) normalmente imprimem só 6 casas depois da vírgula, ou coisa parecida, e então você não vê esse problema acontecer.

Era a resposta que eu temia ler… =/ hehehe

Vlw thingol

É que BigDecimal você tem de inicializar o valor assim:

BigDecimal bd1 = new BigDecimal ("1.15"); // veja que estou usando uma string
BigDecimal bd2 = new BigDecimal ("100");
import java.math.*;

class TesteConstrutorBigDecimal {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal (1.15); 
        BigDecimal bd2 = new BigDecimal ("1.15");

        // Deve mostrar 1.149999999999999911182158029987476766109466552734375
        System.out.println (bd1); 
        // Deve mostrar 1.15
        System.out.println (bd2);
    }
}

Já se perguntou porque isso acontece?
http://www.guj.com.br/posts/list/84121.java
http://www.guj.com.br/posts/list/68086.java

Muito obrigado pela explicação galera…

Valeu pelos post vini …