I am trying to keep two decimal places, even if then numbers are zeroes, using DecimalFormatter:
DecimalFormat df = new DecimalFormat("#.00");
m_interest = Double.valueOf(df.format(m_principal * m_interestRate));
m_newBalance = Double.valueOf(df.format(m_principal + m_interest - m_payment));
m_principal = Double.valueOf(df.format(m_newBalance));
However for some values this gives two decimal places, and for others it doesnt. How can i fix this?
解决方案
It is because you are using Double.valueOf on the DecimalFormat and it is converting the formatted number back to a double, therefore eliminating the trailing 0s.
To fix this, only use the DecimalFormat when you are displaying the value.
If you need m_interest calculations, keep it as a regular double.
Then when displaying, use:
System.out.print(df.format(m_interest));
Example:
DecimalFormat df = new DecimalFormat("#.00");
double m_interest = 1000;
System.out.print(df.format(m_interest)); // prints 1000.00