舍入整数到两个“0”小数?

时间:2013-09-26 23:28:26

标签: java double decimal

如何将前几个偶数舍入到两个零?

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新手!我不知道复杂的事情..并且想知道是否有一个简单的修复,根本没有增加很多代码。

谢谢!

3 个答案:

答案 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

更适合打印格式化数据。你甚至不需要自己围绕它!