Classe Math e Sobre numeros muito grandes

4 respostas
Hempx

Ola,

Estou com certos problemas com a classe Math,

:arrow: primeiro

porque quando coloco:
Math.tan( 45 ) o resultado é 1.619… e não 1 o que seria o certo!

:arrow: segundo

olhei o doc e vi o metado toRadians( double angdeg ), então testei
Math.tan( Math.toRadians( 45 ) )
resultado foi 0.999…
chegou aproximado na resposta que eu queria, mas não entendi o porque disso.
:arrow: terceiro

Mas uma coisa, estou fazendo um programa que é puro calculo, e arredondamentos pode prejudicar muito
o seu funcionamento, se alguem ae ja fez algum programa desse tipo que possa me dar uma ajuda
e se existi algum tipo maior que double e que contenha os metados
sin, cos, acos, sqrt ou alguem maneira usando double que tan( 45 ) seja 1 e por ae vai

Obrigado.

4 Respostas

cv1

De uma procurada sobre o padrao IEEE (sorry, nao tenho o numero dele agora) que o Java usa para calculo de numeros com ponto flutuante. Esse padrao define que, no caso da sua operacao, por exemplo, o resultado correto e’ 0.999999999. Se vc quiser precisao “bancaria”, onde Math.tan(Math.toRadians(45)) == 1, de uma olhada na classe java.lang.BigDecimal. :wink:

cancao

“Hempx”:
Ola,
porque quando coloco:
Math.tan( 45 ) o resultado é 1.619… e não 1 o que seria o certo!

Porque o parametro da função é um angulo em radianos em não em graus.

Na doc desse metodo há a seguinte obs:

E no metodo que converte de radianos para graus, há o seguinte:

Desculpe, mas não sei como resolver essas broncas. :roll:

Até.

Hempx

Obrigado ae :lol: :lol: :lol: :lol:

louds

O cv ta falando do IEEE 754. Padrão de para números FP.

Funciona muito bem se voce trabalhar 100% com números em radianos.
Uma vez que a conversão costuma jogar fora vários bits de precisão.

tenta

Math.tan(Math.PI / 4)[/code]
Criado 8 de outubro de 2003
Ultima resposta 9 de out. de 2003
Respostas 4
Participantes 4