Tentei conveter doubles em inteiros para poder usar as funções Math. e fiz assim:
double numero, area;
numero=2
area=numero+numero
int numeroInt=(int)area;
E de alguma maneira o resultado foi: 4,00(com uma vírgula e não um ponto). Alguém me ajuda?
era só um exemplo esse código. eu estava usando Big Decimal e scale() pra saber quantas casa decimais tinha o numero double e se fosse ele inteiro só que com as casas 00 eu iria transforma-lo em inteiro pra tirar as casas 00, porém eu descobri que scale() não é útil pra isso e usei math.floor() e continue usando o:
resultado=(int)numero;
E deu certo. mas a questão da vírgula eu não sei realmente o resultado tinha ,00 e não .00. não sei se é porque eu estou usando String.format pode ser isso. obrigado staroski.
E continua não mostrando seu código, como espera receber ajuda sem mostrar o que está fazendo?
Entenda que:
O número armazenado na memória do computador não possui vírgula nem ponto. Ele é armazenado como uma sequência de bits que representam seu valor em ponto flutuante (no caso do double) ou inteiro (no caso do int).
Quando você vê ponto (.) ou vírgula (,), isso depende apenas de como o número é formatado para exibição. Por exemplo:
Em países como o Brasil, o separador decimal é a vírgula (4,00).
Em países como os EUA, o separador decimal é o ponto (4.00).
O Java, por padrão, utiliza o ponto como separador decimal quando você apenas imprime o número, mas se você usa métodos que respeitam a localização (locale), como NumberFormat ou DecimalFormat, ele pode imprimir com vírgula dependendo do seu sistema operacional ou das configurações regionais.
Exemplo rápido:
double numero = 4.0;
System.out.println(numero); // imprime 4.0 por padrão
// Mas se você formatar considerando o locale brasileiro:
import java.text.NumberFormat;
import java.util.Locale;
NumberFormat nf = NumberFormat.getInstance(new Locale("pt", "BR"));
System.out.println(nf.format(numero)); // imprime 4,0
Portanto, o número é o mesmo. O que muda é apenas a forma como você o vê na tela, dependendo de:
Qual função de formatação está usando
Qual localização (locale) está configurada no seu sistema ou no formatador
Antes de sair tentando coisas aleatórias, sempre verifique a documentação.
No caso, para remover os zeros do final, existe o método stripTrailingZeros. Depois, basta ver se a escala resultante é menor ou igual a zero (pois se a escala é maior, é porque ainda tem casas decimais e portanto não é inteiro).
Ou seja, seria algo assim:
BigDecimal b = // algum valor qualquer....
if (b.stripTrailingZeros().scale() <= 0) {
// valor é inteiro
int valor = b.intValue();
} else {
// valor não é inteiro
}
Repare também que basta usar o método intValue() para obter o valor como um int.
@staroski eu estou fazendo uma calculadora com JOptionPane’s:
public void potenciacao(){
String resposta, valor;
double produto,base, indice;
valor=JOptionPane.showInputDialog("qual o valor da base? ");
base=Double.parseDouble(valor.trim());
valor=JOptionPane.showInputDialog("qual o valor do expoente? ");
indice=Double.parseDouble(valor.trim());
produto=Math.pow(base, indice);
if(produto==Math.floor(produto)){
int resultadoI;
resultadoI=(int)produto;
resposta=String.format("o resultado é "+resultadoI);
JOptionPane.showMessageDialog(null, resposta);
@hugokotsubo eu perguntei pesquisei no google e usei a resposta gerada por IA, e quando não estava funcionado eu fui no Chat GPT e ele me disse pra usar o Math.floor().
Bom, fica a lição de não sair usando IA pra tudo, ou pelo menos não confiar cegamente, e sempre consultar outras fontes (de preferência, documentação, fóruns, Stack Overflow e qualquer coisa que não seja outra IA). Principalmente pra coisas que vc não conhece muito bem, pois a taxa de acerto das IA’s ainda não é tão confiável assim - como vc mesmo pôde perceber.