美文网首页
String.format/BigDecimal/Decimal

String.format/BigDecimal/Decimal

作者: 改名_f64e | 来源:发表于2018-06-25 10:15 被阅读0次

BigDecimal

BigDecimal bigDecimal = new BigDecimal();
            
bigDecimal.intValue();  //返回int类型
    
bigDecimal.byteValue(); //返回byte类型
    
bigDecimal.doubleValue();//返回double类型
    
bigDecimal.floatValue();//返回float类型
    
bigDecimal.longValue();//返回long类型
    
bigDecimal.setScale(1, BigDecimal.ROUND_UP);//保留1位小数,无论第二位是几都向上进1
    
bigDecimal.setScale(1, BigDecimal.ROUND_DOWN);//保留1位小数,无论第二位是几,都不进1
    
bigDecimal.setScale(1, BigDecimal.ROUND_HALF_DOWN));//保留1位小数,四舍五入
    
bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP));//保留1位小数,四舍五入
    
bigDecimal.signum());//获取数值的正负
    
bigDecimal.abs());//获取绝对值
    
bigDecimal.compareTo(new BigDecimal("144.2")));//与指定的数值做比较
    
bigDecimal.max(new BigDecimal("133.2")));//比较两个数的最大值
    
bigDecimal.min(new BigDecimal(22.2)));//比较两个数的最小值
    
bigDecimal.movePointLeft(2));//小数点向左移2位
    
bigDecimal.movePointRight(2));//小数点向右移两位
    
bigDecimal.remainder(new BigDecimal("3")));//取余
    
bigDecimal.toEngineeringString());//字符串表示形式,需要指数时,则使用工程计数法
    
bigDecimal.toPlainString());//不带指数字段的此BigDecimal的字符串表示形式
    
bigDecimal.ulp());//返回精确到第几位
    
bigDecimal.stripTrailingZeros());//数值上等于此小数,但从该表示形式移除所有尾部零的BigDecimal
    
bigDecimal.add(new BigDecimal("10")));//加
    
bigDecimal.subtract(new BigDecimal("30")));//减
    
bigDecimal.multiply(new BigDecimal("10")));//乘

bigDecimal.divide(new BigDecimal("40"), 3, BigDecimal.ROUND_HALF_DOWN));//除

DecimalFormat

//0 : 数字,如果数字不存在用0补齐
//# : 数字,如果数字不存在则显示空( )
//. : 小数分隔符
//, : 分组分隔符(例如:333,333,333)
//% : 数值*100,用%号显示(32.33%)
//$ : 在后面加上货币符号

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.applyPattern("###.###");
decimalFormat.format(12.34));   //12.34

decimalFormat.applyPattern("000.000");
decimalFormat.format(12.34));       //012.340

decimalFormat.applyPattern("0.0");
decimalFormat.format(12.34));       //12.3,保留1位小数,整数全部显示

decimalFormat.applyPattern("#.#");
decimalFormat.format(12.34));       //12.3,保留1位小数,整数全部显示

decimalFormat.applyPattern("#0.000%");
decimalFormat.format(0.3222222));   //32.222%

decimalFormat.applyPattern("#.000$");
decimalFormat.format(222.3222222)); //222.322$

Math

//取整,返回小于目标的最大整数
Math.floor(-1.8);  //-2
Math.floor(1.8);   //1

//取整,返回大于目标数的最小整数
Math.ceil(-1.8);  //-1
Math.ceil(1.8);   //2

//四舍五入取整
Math.round(123.345345);  //123
Math.round(123.456234345);  //123
Math.round(123.567678);  //124
Math.round(-123.345345);  //-123
Math.round(-123.456234345);  //-123
Math.round(-123.567678);  //-124

//计算平方根
Math.sqrt(1.21);  //1.1
Math.sqrt(9);    //3.0
Math.sqrt(-1.21);  //NaN

//计算立方根
Math.cbrt(27);  //3
Math.cbrt(1.331);  //1.1
Math.cbrt(-1.331);  //-1.1

//返回欧拉数e的n次幂
Math.exp(3);

//计算乘方,下面是计算3的2次方
Math.pow(3,2);

//计算自然对数
Math.log();

//计算绝对值
Math.abs(10);  //10
Math.abs(-10);  //10

//计算最大值
Math.max(2.3,4.5);  //4.5

//计算最小值
Math.min(2.3,4.5);  //2.3

//返回一个伪随机数,该数大于等于0.0并且小于1.0(不等于1.0)
Math.random()

//返回其值最接近参数并且是整数的 double 值。如果两个整数的 double 值都同样接近,那么结果取偶数
Math.rint(66.333);  //66
Math.rint(66.666);  //67
Math.rint(66.500);  //66
Math.rint(67.500);  //68

String.format

完整的格式 : %[index$][标识]*[最小宽度][.精度]转换符

1.% ,占位符的其实字符,若要在占位符内部使用%,则需要写成 %%

2.[index$] ,位置索引从1开始计算,用于指定对索引相应的实参进行格式化并替换掉该占位符

3.[标识] ,用于增强格式化能力,可同时使用多个 [标识] ,但某些标识是不能同时使用的
    3.1 - : 在最小宽度内左对齐,右边用空格补上(不可以与0一起使用)
    System.out.println(String.format("%-7d1", 100));   //100    1
    
    3.2 0 : 若内容长度不足最小宽度,则在左边用0来填充(其他数字无效)
    System.out.println(String.format("%08d", 100));         //00000100
    
    3.3 # : 对8进制和16进制,8进制前添加一个0,16进制前添加0x
    
    3.4 + : 结果总包含一个+或-号
    System.out.println(String.format("%+d", 100));           //+100
    
    3.5 空格 : 正数前加空格,负数前加-号
    System.out.println(String.format("% d", 200));           // 200
    System.out.println(String.format("% d", -200));          //-200
    
    3.6 , : 只用与十进制,每3位数字间用,分隔
    System.out.println(String.format("%,d", 999999999));     //999,999,999
    
    3.7 ( : 若结果为负数,则用括号括住,且不显示符号
    System.out.println(String.format("%(d", -999999));       //(999999)
    
    注意:标识可以一起使用(除了 - 和 0 )

4.[最小宽度] ,用于设置格式化后的字符串最小长度,若使用 [最小宽度] 而没有设置 [标识] 
  ,那么当字符串长度小于最小宽度时,则以左边补空格的方式凑够最小宽度

5.[.精度] ,对于浮点数类型格式化使用,设置保留小数点后多少位
System.out.println(String.format("%.2f",7777.7777));        //7777.78
System.out.println(String.format("%.2g",7777.7777));        //7.8e+03

注意:保留小数后几位建议用 %f, (因为 %g 格式化出来的是科学计数法)

6.转换符 ,用于指定格式化的样式,和限制对应入参的数据类型
    6.1 %b : 布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false
    
    6.2 %d : 整数
    
    6.3 %x : 16进制
    
    6.4 %0 : 8进制
    
    6.5 %n : 换行符
    
    6.6 %f : 浮点型,十进制,显示9位有效数字,自动四舍五入
    System.out.println(String.format("%f",999000.9999999999999));   //999001.000000
    
    6.7 %g : 浮点型,十进制,显示6位有效数字,自动四舍五入
    System.out.println(String.format("%g",999880.9999999999999));   //999881
    System.out.println(String.format("%g",9880.9999999999999));     //9881.00
    
7.日期格式化:
    %tc : 日期格式化,星期六 十月 27 14:21:20 CST 2007
    %tF : 2007-10-27
    %tD : 10/27/07
    %tr : 02:25:51 下午
    %tT : 14:28:16
    %tR : 14:28
    %tb : 月份简称
    %tB : 月份全称
    %ta : 星期简称
    %tA : 星期全称
    %tC : 年前两位(不足两位补零)
    %ty : 年后两位(不足两位补零)
    %tj : 当年的第几天
    %tm : 月份(不足两位补零)
    %td : 日期(不足两位补零)
    %te : 日期(不足两位不补零)
    %tH : 24小时制的小时(不足两位补零)
    %tk : 24小时制的小时(不足两位不补零)
    %tI : 12小时制的小时(不足两位补零)
    %tl : 12小时制的小时(不足两位不补零)
    %tM : 分钟(不足两位补零)
    %tS : 秒(不足两位补零)
    %tL : 毫秒(不足三位补零)
    %tN : 毫秒(不足9位补零)
    %tp : 小写字母的上午或下午标记,如中文为“下午”,英文为pm
    %tz : 相对于GMT的时区偏移量,如+0800
    %tZ : 时区缩写,如CST
    %ts : 自1970-1-1 00:00:00起经过的秒数
    %tQ : 自1970-1-1 00:00:00起经过的豪秒
    
    System.out.println(String.format("%tF %<tT", new Date()));  //2016-11-13 15:18:58
    
    %< : 用于格式化前一个转换符所描述的参数
        int num = 1000;
        String str = String.format("%d %<,d", num);(根据, 分割数字)
        // 结果"1000 1,000

相关文章

网友评论

      本文标题:String.format/BigDecimal/Decimal

      本文链接:https://www.haomeiwen.com/subject/ukieyftx.html