java格式化输出

在做算法题时经常要格式化输出,在这里,我总结了一下java的格式化输出:

使用方法:System.out.printf();

数据类型    转化代码      举例                   格式化举例     转化后输出

int          d          512                   "%6d"            "   512"

                                              "%-6d"           "512   "
double       f          15.36                 "%6.1f"          "   15.4"

                        15.6                  "%.1f"           "15.4"
             e          15.36                 "%10.1e"        "   1.5e+01"
String       s                 "Hello, World"    "%14s"          "  Hello, World"
                               "Hello, World"    "%-14s"         "Hello, World  "
                               "Hello, World"    "%-14.5s"       "Hello         "


此外,在算法题中如果用java做,bigdecimal也很常用,用法如下:

BigDecimal常用于金额的计算,下面总结下BigDecimal的用法。

1.加减乘除

2.设置精度

3.取反

加减乘除分别调用函数

[java]  view plain  copy
  1. public BigDecimal add(BigDecimal value);  
  2. public BigDecimal subtract(BigDecimal value);  
  3. public BigDecimal multiply(BigDecimal value);  
  4. public BigDecimal divide(BigDecimal value);  

举例:

[java]  view plain  copy
  1. BigDecimal a=new BigDecimal(10.0);  
  2. BigDecimal b=new BigDecimal(9.1);  
  3. System.out.println(a.subtract(b));  

精度设置,为什么会设置精度,给大家看个效果

代码如下:

[java]  view plain  copy
  1. BigDecimal abig=new BigDecimal(10.0);  
  2. BigDecimal bbig=new BigDecimal(9.1);  
  3. BigDecimal cbig=new BigDecimal(8.9);  
  4.   
  5. System.out.println(abig.subtract(bbig));  
  6. System.out.println(abig.subtract(cbig));  

结果如下:

[java]  view plain  copy
  1. 0.9000000000000003552713678800500929355621337890625  
  2. 1.0999999999999996447286321199499070644378662109375  
并不是我们希望看到的0.9和1.1,原因就是转成二进制的时候会有精度问题,导致这样的结果。所以我们可以在运算的时候加精度,也可以在实例化BigDecimal的时候用字符串。

设置精度的方法:

[java]  view plain  copy
  1. System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));  
  2. System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));  
这样设置两位精度就可以啦

[java]  view plain  copy
  1. 0.90  
  2. 1.10  
字符串实例化的方法:

[java]  view plain  copy
  1. BigDecimal abig=new BigDecimal("10.0");  
  2. BigDecimal bbig=new BigDecimal("9.1");  
  3. BigDecimal cbig=new BigDecimal("8.9");  


取反

因为Bigdecimal是无法直接用+-*/这些符号进行计算的,所以取反的时候也需要一个单独的方法来实现:

[java]  view plain  copy
  1. System.out.println(abig.negate());  
这样就会拿到它的相反数了:

[java]  view plain  copy
  1. -10.0  


BigDecimal   b=new BigDecimal("24");

等还可以用

b.longValue()  .intValue()   .floatValue()   .byteValue()转化为相应的long,int,float,byte类型。

                   


猜你喜欢

转载自blog.csdn.net/qq_37372007/article/details/79547478