Se alguem puder me ajudar, é o seguite, estou fazendo uma soma entre 2 valores Double ex: 573.67 + 109.4 e o resultado é = 683.06999999. Gostaria de saber como faço para esse resultado ficar 683.07 ?
Obrigado.
Se alguem puder me ajudar, é o seguite, estou fazendo uma soma entre 2 valores Double ex: 573.67 + 109.4 e o resultado é = 683.06999999. Gostaria de saber como faço para esse resultado ficar 683.07 ?
Obrigado.
Boa tarde daniel, são várias maneiras de se fazer… uma delas é utilizando decimal format… Olha ai amigo.
import java.text.DecimalFormat;
public class somaDouble {
public static void main(String[] args) {
Double num1 = 573.67;
Double num2 = 109.4;
Double soma = num1 + num2;
DecimalFormat df = new DecimalFormat("#,###.00");
System.out.println(df.format(soma));
}
}
Qualquer coisa estou aew…
abraços.
double x = 573.67;
double y = 109.4;
double z = x + y;
System.out.println(z);
z = z * 100;
z = Math.round(z);
z = z / 100;
System.out.println(z);
Outra forma seria assim:
public class somaDouble {
public static void main(String[] args) {
Double num1 = 573.67;
Double num2 = 109.4;
Double soma = num1 + num2;
System.out.printf("%.2f", soma);
}
}
vlw, abraços amigo.
qualquer coisa é só perguntar… !
Obrigado pela ajuda!!!
[quote=heatcold]double x = 573.67;
double y = 109.4;
double z = x + y;
System.out.println(z);
z = z * 100;
z = Math.round(z);
z = z / 100;
System.out.println(z);[/quote]
Essa daí é cabulosa… rsrsrs
O Math.round() remove a parte fracionária de um número.
Você pode usar uma função assim:
public static double round2Decimals(double numero) {
double result = numero * 100;
result = Math.round(result);
result = result / 100;
return result;
}
Depende do seu problema, você quer simplesmente gerar uma String do número ou precisa manter a representação decimal exata em memória ? No primeiro caso, você pode usar tanto o DecimalFormat ou o String.format. Caso você precise de uma representação exata do número em memória, que me parece ser o seu caso, então você precisa usar a classe BigDecimal ao invés de double ou float.
Usando a dica do BigDecimal fica bem melhor.
Refatorei a função que eu havia postado 
public static BigDecimal round2Decimals(double numero) {
final BigDecimal decimal = new BigDecimal(numero);
// numero de casas da parte inteira (para 683.0699 serão 3 casas)
int inteiros = decimal.precision() - decimal.scale();
int fracao = 2;
MathContext mathContext = new MathContext(inteiros + fracao, RoundingMode.HALF_UP);
return decimal.round(mathContext);
}