小白学Java13:数学工具类:Math,高精度计算和数字格式化
2020-06-04 06:37
134 查看
数学工具类:Math,高精度计算和数字格式化
数学工具类:Math
- Math 类包含基本的数字操作,如指数、对数、平方根和三角函数;Math中方法和常量都是静态的,因此可以通过类名直接调用
常用方法:
常用的方法: •static double abs(double a); //有重载方法 绝对值 •static double ceil(double a); //有重载方法 向上取整(只要有小数部分不为0,就进1 •static double floor(double a); //有重载方法 向下取整(只要有小数部分不为0,就不进1 •static 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(); } }
相关文章推荐
- 【转】Java工具类——数字计算工具 NumberUtil
- Java数学工具类Math
- java中数字格式化,计算百分比
- Java模块 -- BigDecimal 高精度数字计算
- Java工具类——数字计算工具 NumberUtil
- JAVA中计算百分比 格式化数字
- java:Date日期类、Format格式转化器,DateFormat日期格式转化器、Math数学计算类
- java中的Math数学计算函数
- 在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类。这两个类用于高精度计 算,其中BigInteger类是针对大整数的处理类,而
- JAVA单排日记-2019/10/16-3-数学工具类Math
- Java 工具类总结(1): 使基本数值计算更简单 - Math
- Java基础(数学工具类Math常用方法)
- Java工具类——数字计算工具 NumberUtil
- Java工具类---数字计算工具 NumberUtil
- [LeetCode刷题笔记]Math数学类型题目(二)字符串型数字计算
- java计算工具类UnitProPlus
- Java 格式化(数字和字符串)
- Java数字格式化
- Java中的时间格式化和时间计算的方法
- java中格式化输出数字