Se o valor for 200.3456
, deve ser formatado para 200.34
.
Se o valor for 200
, então deve ser 200.00
.
Se você quiser apenas imprimir um duplo
com dois dígitos após o ponto decimal, use algo como isto:
double value = 200.3456;
System.out.printf("Value: %.2f", value);
Se você quiser ter o resultado em um 'String' ao invés de ser impresso no console, utilize String.format()
com os mesmos argumentos:
String result = String.format("%.2f", value);
Ou utilize a classe 'DecimalFormat':
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
A maneira mais fácil, seria fazer um truque como este;
double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;
se o Val começa em 200,3456 então vai para 20034,56 então é arredondado para 20035 então nós dividimos para obter 200,34.
se quisesses arredondar sempre para baixo, podíamos sempre truncar com um casting para uma int:
double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;
Esta técnica funcionará na maioria dos casos porque para duplas muito grandes (positivas ou negativas) ela pode transbordar. mas se você sabe que seus valores estarão em uma faixa apropriada, então isto deve funcionar para você.
Arredondar um duplo normalmente não é o que se quer. Ao invés disso, utilize String.format()
para representá-lo no formato desejado.