如何将前几个偶数舍入到两个零?
public class MoneyDriver
{
public static void main( String[] args )
{
int a = 2011;
int b = 21;
double c = 2200.00;
double d = 31500.00;
System.out.println( "Year" + "\t" + "Age" + "\t" + "Balance at end of year" +
"\t" + "Income adjusted for inflation" );
for( int r = 1; r < 10; r++)
{
double e = Math.round(c * 100.0) / 100.0;
double f = Math.round(d * 100.0) / 100.0;
System.out.println( a + "\t" + b + "\t" + e + "\t" + f );
a = a + 1;
b = b + 1;
c = ( c + 2000 ) * 1.1;
d = ( d * 1.05 );
}
}
}
目前这给了我输出:
Year Age Balance at end of year Income adjusted for inflation
2011 21 2200.0 31500.0
2012 22 4620.0 33075.0
2013 23 7282.0 34728.75
2014 24 10210.2 36465.19
2015 25 13431.22 38288.45
2016 26 16974.34 40202.87
2017 27 20871.78 42213.01
2018 28 25158.95 44323.66
2019 29 29874.85 46539.85
我假设一旦小数在前四位固定,标签就会正确。
我是JAVA新手!我不知道复杂的事情..并且想知道是否有一个简单的修复,根本没有增加很多代码。
谢谢!
答案 0 :(得分:2)
您可以尝试格式化字符串,如C:
System.out.printf("%d\t%d\t%.2f\t%.2f\n", a, b, e, f);
答案 1 :(得分:2)
您应该使用BigDecimal来代表金钱。
见:
Representing Monetary Values in Java
https://blogs.oracle.com/CoreJavaTechTips/entry/the_need_for_bigdecimal
http://www.javapractices.com/topic/TopicAction.do?Id=13
您可以使用BigDecimal用于缩放,舍入,格式化等的各种方法。
答案 2 :(得分:0)
看一下printf:
http://docs.oracle.com/javase/tutorial/java/data/numberformat.html
更适合打印格式化数据。你甚至不需要自己围绕它!