在做算法题时经常要格式化输出,在这里,我总结了一下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.取反
加减乘除分别调用函数
- public BigDecimal add(BigDecimal value);
- public BigDecimal subtract(BigDecimal value);
- public BigDecimal multiply(BigDecimal value);
- public BigDecimal divide(BigDecimal value);
举例:
- BigDecimal a=new BigDecimal(10.0);
- BigDecimal b=new BigDecimal(9.1);
- System.out.println(a.subtract(b));
精度设置,为什么会设置精度,给大家看个效果
代码如下:
- BigDecimal abig=new BigDecimal(10.0);
- BigDecimal bbig=new BigDecimal(9.1);
- BigDecimal cbig=new BigDecimal(8.9);
- System.out.println(abig.subtract(bbig));
- System.out.println(abig.subtract(cbig));
结果如下:
- 0.9000000000000003552713678800500929355621337890625
- 1.0999999999999996447286321199499070644378662109375
设置精度的方法:
- System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
- System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));
- 0.90
- 1.10
- BigDecimal abig=new BigDecimal("10.0");
- BigDecimal bbig=new BigDecimal("9.1");
- BigDecimal cbig=new BigDecimal("8.9");
取反
因为Bigdecimal是无法直接用+-*/这些符号进行计算的,所以取反的时候也需要一个单独的方法来实现:
- System.out.println(abig.negate());
- -10.0
BigDecimal b=new BigDecimal("24");
等还可以用
b.longValue() .intValue() .floatValue() .byteValue()转化为相应的long,int,float,byte类型。