有需求:
从oracle数据库里读取到的number,小数点后保留2位,整数位不变,并加上百分号。
采用以下方法
select to_char(0.556, 'FM999999999999990.00') || '%' from dual; # 0.56%
select to_char(13.556, 'FM999999999999990.00') || '%' from dual; #13.56%
select to_char(225.1, 'FM999999999999990.00') || '%' from dual; #225.10%
解释:
- 0表示的是必须要显示的位,如果没有数就填0,对于225.1只有1位小数,因此第2位小数会被填0。
- 9和0一样,也表示必须要填的位,如果没有数就填空格。比如225.1,没有千位以上的数字,因此全部填空格
- FM用于将产生的空格trim掉,这样225.1通过9产生的空格就会被删掉
- 个位必须要写0,否则0.556就会被转换为.56%
同时又有需求
对于java读取的double,小数点后保留2位,整数位不变,并加上百分号。
Java采用DecimalFormat控制显示的double格式,可以采用以下定义
final DecimalFormat df = new DecimalFormat("#0.00'%'");
df.format(0.556); // 0.56%
df.format(13.556); // 13.56%
df.format(225.1); // 225.10%
解释:
- 0表示的是必须要显示的位,如果没有数就填0,这个和oracle to_char的要求一致
- #表示的是可以显示的位,如果没有就不显示。
- ‘%’如果不加上单引号的,显示的数会被乘以100,比如0.556就会被显示为55.60%
- 个位必须要写0,这个和oracle to_char的原因一致