Erro de divisao na JVM 1.5 (BigDecimal)

Turma, eu tinha um codigo que funcionava perfeitamente na jvm 1.4 mais qdo executado na 1.5 tem um resultado não esperado. Ex:

  BigDecimal a = new BigDecimal("1");
  BigDecimal b =  a.divide(new BigDecimal("10000000"),15,BigDecimal.ROUND_HALF_UP);
  System.out.println(b);

Resultado JVM 1.4 = 0.000000100000000
Resultado JVM 1.5 = 1.00000000E-7

Pergunta:
Como fazer com que na jvm 1.5 retorne o mesmo resultado.

[],s

Também estou tendo o mesmo problema só que com a operação de subtração , não tinha conhecimento que a JVM 1.4 truncava de uma maneira mais logica o resultado.
A 1.5 parece que joga esse E de “erro” no valor, e se perde…Embora eu saiba que o valor na1.4 não seja preciso, mas preferia que houvesse uma forma de truncar o valor afim de obter um resultado mais coerente.

Vocês não conhecem notação científica?
O valor é exatamente o mesmo (10 elevado a menos 7).
O “E” não é de “erro” coisa nenhuma; parece que nunca mexeram numa calculadora científica durante toda a sua vida.

[quote=thingol]Vocês não conhecem notação científica?
O valor é exatamente o mesmo (10 elevado a menos 7).
O “E” não é de “erro” coisa nenhuma; parece que nunca mexeram numa calculadora científica durante toda a sua vida.
[/quote]

Caro amigo, o fato de ser uma notação cientifica até minha filha de 6 anos de idade sabe, a pergunta feita foi outra. Coisa que ela tambem saberia ler.

[],s

Olá

Só por curiosidade: porque esta dúvida foi colocada como Java avançado e porque no título está escrito erro da JVM?

[]s
Luca

Olá

Qual foi a pergunta então? Foi sobre PrintStream printf?

[]s
Luca

Se você precisa uma conversão uniforme para string, você precisa usar uma formatação uniforme. O número é exatamente o mesmo (10 elevado a menos 7).

Eu sei que java.text.DecimalFormat aceita, na versão 5.0, BigDecimal; não sei se na versão 1.4 ele aceita BigDecimal - só checando.

Então a pergunta certa, seria tem como evitar essa notação?
Nesse threadhttp://www.guj.com.br/posts/preList/76093/401747.java#401747
Eu questiono a mesma coisa e posto meu código que estou tendo problema.
Minha maior dificuldade é que no meu caso mesmo com a notação cientifica, na hora da comparação com um valor sem essa notação eu tenho problemas.
E realmente não tenho muita habilidade com calculadora cientifica.

Use o método toPlainString para obter o mesmo comportamento da versão 1.4.

(toString, a partir da versão 5.0, usa notação científica se necessário.)

Eu falo sobre toString, porque

System.out.println (b);

é equivalente a:

System.out.println (b.toString());

[quote=thingol]Use o método toPlainString para obter o mesmo comportamento da versão 1.4.
[/quote]

Agora!!! funcinou blz, valeu pela dica. :thumbup:

[],s