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,
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 …