小白学Java13:数学工具类:Math,高精度计算和数字格式化

数学工具类:Math,高精度计算和数字格式化

  • 数学工具类:Math
    • 常用方法:
    • 随机数类:Random
  • 高精度计算类:DigDecimal
    • 构造方法
    • 常用方法
    • 关于小数的舍入模式
  • 数字格式化:NumberFormat
    • 构造方法
    • 常用方法
  • 自定义数字格式化类:DecimalFormat
    • 构造方法
    • 数字转字符串:format()
    • 字符串转数字:parse()

数学工具类:Math

  • Math 类包含基本的数字操作,如指数、对数、平方根和三角函数;Math中方法和常量都是静态的,因此可以通过类名直接调用

常用方法:

常用的方法:static double abs(double a); //有重载方法 绝对值static double ceil(double a); //有重载方法 向上取整(只要有小数部分不为0,就进1static double floor(double a); //有重载方法 向下取整(只要有小数部分不为0,就不进1static long round(double a); //有重载方法 四舍五入static double pow(double a, double b); //次方static double random();//随机数static double max(double a,double b);//求两数的大值static double min(double a,double b);//求两数的小值

随机数类:Random

创建:
Random ra = new Random();

使用:
int i = ra.nextInt();  //取值范围

高精度计算类:DigDecimal

  • 当我们计算小数的时候,很多时候得不到准确的值
double a = 0.3;
double b = 3;
double c = a*b;
System.out.println(c); //0.8999999999999999
  • 这个时候就需要使用java的高精度计算类:BigDecimal

构造方法

BigDecimal bd = new BigDecimal("0.3");
BigDecimal bd2 = new BigDecimal(3.0);

常用方法

常用方法:
•BigDecimal add(BigDecimal augend); // 加法
    BigDecimal add = bd.add(bd2);
•BigDecimal subtract(BigDecimal subtrahend); // 减法   
    BigDecimal subtract = bd.subtract(bd2); 
•BigDecimal multiply(BigDecimal multiplicand); //乘法
    BigDecimal multiply = bd.multiply(bd2);
•BigDecimal divide(BigDecimal divisor);  //  除
        BigDecimal divide = bd.divide(bd2);
   重载: BigDecimal divide(divisor, scale, roundingMode)
        divisor:除数
        scale:位数
        roundingMode:舍入模式:
        
•BigDecimal setScale(int newScale, int roundingMode);
    保留小数位       位数,舍入模式
    //保留小数位(newScale:保留几位小数,roundingMode:舍入模式)
BigDecimal setScale(int newScale, int roundingMode)
//取余运算
BigDecimal remainder(BigDecimal divisor);
//求相反数
BigDecimal negate();
//比较大小(左边比右边数大返回1,相等返回0,比右边小返回-1)
int compareTo(BigDecimal val);
//将BigDecimal对象中的值以整数返回
int intValue() 
//将BigDecimal对象中的值以double类型返回
double doubleValue()
//将BigDecimal对象中的值以float类型返回
float floatValue()
//将BigDecimal对象中的值以long类型返回
long longValue()
//将BigDecimal对象中的值以String类型返回
String toString()

关于小数的舍入模式

BigDecimal中的divide(BigDecimal divisor, int scale, int roundingMode) 方法,需要用到舍入模式。

ROUND_CEILING(往右靠近): 舍位时往正无穷方向移动 1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -1 -1.5-> -1 -1.8-> -1
ROUND_DOWN(往0靠近,正数全舍,负数进1:0的方向移动1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -1 -1.5-> -1 -1.8> -1
ROUND_FLOOR(往左靠近):与CEILING相反,往负无穷 1.1-> 1 1.5-> 1 1.8-> 1 -1.1-> -2 -1.5-> -2 -1.8-> -2
ROUND_HALF_DOWN(五舍六入):5为分界线,或曰五舍六入1.5-> 1 1.6-> 1 -1.5-> -1 -1.6-> -2
ROUND_HALF_EVEN(前一位是偶数五舍去,前一位是奇数,五进1:同样以5为分界线,如果是5,则前一位变偶数1.15-> 1.2 1.16-> 1.2 1.25-> 1.2 1.26-> 1.3
ROUND_HALF_UP(四舍五入):最常见的四舍五入
UNNECESSARY:无需舍位
ROUND_UP:与ROUND_DOWN,远离0的方向1.1-> 2 1.5-> 2 1.8-> 2 -1.1-> -2 -1.5-> -2 -1.8-> -2
            

数字格式化:NumberFormat

采用单例模式实现

构造方法

static NumberFormat getInstance();
    NumberFormat nf  = NumberFormat.getInstance();

常用方法

void setMaximumFractionDigits(int newValue)//设置最大小数保留位数void setMinimumFractionDigits(int newValue)//设置最小小数保留位数void setMaximumIntegerDigits(int newValue)//设置最大整数保留位数void setMinimumIntegerDigits(int newValue)//设置最小整数保留位数
•String format(long number)  //格式化给定数字
•Number parse(String source) //解析为数字

自定义数字格式化类:DecimalFormat

构造方法

DecimalFormat(String pattern)
    DecimalFormat df = new DecimalFormat("格式");
    
#:表示此位置可有可无
0:占位符,此位置必须有数字
%:此数字以百分比表示

数字转字符串:format()

DecimalFormat df = new DecimalFormat("0.0%");
double d = 0.42;
		
String format = df.format(d);
System.out.println(format);

字符串转数字:parse()

try {
Double parse = (Double)df.parse(format);
System.out.println(parse);
} catch (ParseException e) {
	// TODO 自动生成的 catch 块
	e.printStackTrace();
}
 }

你可能感兴趣的:(学习笔记)