int n=50
final double constante = 3.22; // ou será 3,3
double logaritmo=Math.log(10)/Math.log(n);
System.out.printf("%f", logaritmo);
double numero_de_classesk=(1 + constante * logaritmo);
Não esta funcionando.
R: 0,588592
log 50 => 1,69897
int n=50
final double constante = 3.22; // ou será 3,3
double logaritmo=Math.log(10)/Math.log(n);
System.out.printf("%f", logaritmo);
double numero_de_classesk=(1 + constante * logaritmo);
Não esta funcionando.
R: 0,588592
log 50 => 1,69897
Já tinha feito isso não funciona.
O metodo Math.log() trabalha com logaritmo neperiano.
O certo seria utilizar Math.log10()
Na verdade você fez a conversão de base… Faz assim:
double logaritmo=Math.log(n)/Math.log(10)
Ou então utiliza Math.log10().
Não sei nada de tal logaritmo neperiano.
Seria isso?
double logaritmo=Math.log10(n);
Isso… Você até pode usar o Math.log(), mas você precisaria tirar da base e (número neperiano) e passar pra base 10… Pra isso você faz Math.log(n)/Math.log(10). No que você mostrou ai, você inverteu. Trouxe pra base n ao invés de trazer pra base 10.
Não tem problema em usar uma ou outra?
double logaritmo=Math.log(n)/Math.log(10);
double logaritmo=Math.log10(n);
Tem livros que mostra 3,22 e outros 3,3 na constante qual seria o correto?
Não tem problema… Pode usar uma ou outra. Só vejo usando 3,3.
O double numero_de_classesk deveria ser int numero_de_classesk o que acha?
Só arredondar…
int numero_de_classesk = Math.round(1 + constante * logaritmo);
O que seria Math.round?
Esse método, tido como o método padrão para arredondar valores nesta classe, é usado para receber um parâmetro decimal (Double ou float) e retornar o valor arredondado em inteiro.
Acho que no lugar do Math.round usar o Math.floor o que acha?
Só pegar a parte inteira.
No caso deveria mostra só 45.
O problema é que o Math.floor sempre vai arredondar para baixo, independentemente da parte decimal… Ou seja: Math.floor(45,99) vai retornar 45. Já o Math.round(45,99) retornaria 46.
A regra de sturges arredondar o número ou só pega a parte inteira do número?
Ex:
45,99 => R: 45 ou 46
é bem arbitrário. normalmente é pra cima