Galera, eu fiz um programinha aqui. O cara entra com os valores ai eu faço o calculo de uma formula (GRANDE) e retorno o valor.
Simples, mas como os valores são ou muito pequenos ou muito grandes quando eu retorno o Double as vezes minha resposta vira um ‘NaN’ ao invés do número. Pelo que eu entendi e pesquisei o Double não consegue representar a faixa de valores que eu to trabalhando.
Como eu usei interface gráfica, eu pego o valor no ''txt.getText()" e faço um Double.parseDouble(txt.getText() ) ;
Eu tava jogando esse valor em um Double. Tentei usar o bigDecimal, mas não consegui.
Ele tem como métodos o ‘valueof’, que pode receber um double. Como eu faço pra jogar os valores do txt no BigDecimal ?
Eu posso fazer as operações normalmente com valores desse tipo, por exemplo ‘*’, ‘/’ etc ?
No aguardo.
Valeu.
pra criar um BigDecimal via string ??
new BigDecimal(valorEmString);
no seu caso
BigDecimal value = new BigDecimal(txt.getText());
operações em bigdecimal são assim
BigDecimal soma = value.add(otherValue); // value + otherValue
BigDecimal subtracao = value.subtract(otherValue); // value - otherValue;
BigDecimal multiplicacao = value.multiply(otherValue); // value * otherValue;
BigDecimal divisao = value.divide(otherValue); // value / otherValue
cria pelomenos uma variável BigDecimal aux … e a use como auxiliar nos calculos…
boa sorte
mais informações aqui => http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html
3 curtidas
Obrigado pela ajuda.
O problema que tenho constantes na formula, e outras operações como logaritimo.
Não tem como multiplicar um BigDecimal por uma constante: ‘3.7’ por ex.
Eu teria que converter esse valor ?
valor1 = valor1.valueOf(3.7) ;
Onde valor1 é um BigDecimal… daria certo ?
digamos q vc tenha um bigdecimal value, e queira multiplicar ele por uma constante chamada CONST
value.multiply(new BigDecimal(CONST));
se não quiser ficar escrevendo isso tudo…crie um método auxiliar
public BigDecimal toBig(double value) {
return new BigDecimal(value);
}
ai da pra fazer assim
value.multiply(toBig(CONST)); // <== axo melhor isso que ficar escrevendo new toda hora
Blz. Eu tinha resolvido isso com o método valueOf, ele faz a mesma coisa pelo que eu entendi.
Agora to tentando usar o Log, o método da classe Math, recebe apenas valores double.
Se eu converter o BigDecimal não vai adiantar, certo?
vai perder precisão… leia a api de bigdecimal… pra ver como fazer… existe 1 framework pra usar numeros grandes chamado JQuanty algo assim…