Math类介绍
包含执行基本数字运算的方法,Math类没有提供公开的构造器。
因为Math类是一个工具类, 不需要创建对象; Math类的成员都是静态的,通过类名就可以直接调用
Math类常用方法
方法名说明abs(int a)获取参数绝对值ceil(double a)向上取整floor(double a)向下取整round(float a)四舍五入max(int a,int b)获取两个int值中的较大值pow(double a,double b)返回a的b次幂的值random()返回值为double的随机值,范围[0.0,1.0)
演示代码:
public class MathDemo {
public static void main(String[] args) {
System.out.println(Math.abs(-100));
System.out.println(Math.ceil(10.000001));
System.out.println(Math.floor(10.99999));
System.out.println(Math.round(100.5));
System.out.println(Math.round(100.4));
System.out.println(Math.max(10, 100));
System.out.println(Math.pow(2, 3));
System.out.println(Math.random());
}
}
System类的概述
System也是一个工具类,代表了当前系统,提供了一些与系统相关的方法。
System类常用方法
方法名说明exit(int status)终止当前运行的 Java 虚拟机,参数非零表示异常终止currentTimeMillis()返回当前系统的时间毫秒值形式
exit方法: 终止当前运行虚拟机
public class SystemDemo {
public static void main(String[] args) {
System.out.println("程序开始....");
System.exit(0);
System.out.println("程序结束....");
}
}
currentTimeMillis方法: 获取当前系统的时间毫秒值, 称为时间毫秒值
计算机认为时间是有起点的,起始时间: 1970年1月1日 00:00:00
时间毫秒值:指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的。 1s = 1000ms。
原因:
1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。
演示代码:
public class SystemDemo2 {
public static void main(String[] args) {
long time = System.currentTimeMillis();
System.out.println(time);
}
}
BigDecimal的作用:
用于解决浮点型运算精度失真的问题
public class BigDecimal {
public static void main(String[] args) {
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
double c = 0.1 + 0.2;
System.out.println(c);
}
}
BigDecimal使用步骤:
创建对象BigDecimal封装浮点型数据(最好的方式是调用valueOf方法)
public class BigDecimalDemo {
public static void main(String[] args) {
double a = 0.11;
double b = 0.12;
BigDecimal num1 = BigDecimal.valueOf(a);
BigDecimal num2 = BigDecimal.valueOf(b);
}
}
BigDecimal常用API
方法名说明add(BigDecimal b)加法subtract(BigDecimal b)减法multiply(BigDecimal b)乘法divide(BigDecimal b)除法divide (另一个BigDecimal对象,精确几位,舍入模式)除法
方法使用演示:
加法add 减法subtract
public class BigDecimalDemo {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
BigDecimal num1 = BigDecimal.valueOf(a);
BigDecimal num2 = BigDecimal.valueOf(b);
System.out.println(num1.add(num2));
System.out.println(num1.subtract(num2));
}
}
乘法multiply 除法divide
public class BigDecimalDemo {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
BigDecimal num1 = BigDecimal.valueOf(a);
BigDecimal num2 = BigDecimal.valueOf(b);
System.out.println(num1.multiply(num2));
System.out.println(num1.divide(num2));
}
}
我们最终想要得到的类型是double类型, 通过方法doubleValue
public class BigDecimalDemo {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
BigDecimal num1 = BigDecimal.valueOf(a);
BigDecimal num2 = BigDecimal.valueOf(b);
BigDecimal num3 = num1.add(num2);
double res = num3.doubleValue();
System.out.println(res);
}
}
注意事项: BigDecimal是一定要进行精度运算的(例如下面代码遇到除不尽的情况, 程序就会崩掉)
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal number1 = BigDecimal.valueOf(10.0);
BigDecimal number2 = BigDecimal.valueOf(0.3);
System.out.println(number1.divide(number2));
}
}
解决方法: 使用divide方法时指定参数
divide (另一个BigDecimal对象,精确几位,舍入模式)
舍入模式:
- 四舍五入: RoundingMode.HALF_UP
- 向上取整: RoundingMode.CEILING
- 向下取整: RoundingMode.FLOOR
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal number1 = BigDecimal.valueOf(10.0);
BigDecimal number2 = BigDecimal.valueOf(0.3);
System.out.println(number1.divide(number2));
}
}
小结:
BigDecimal的作用是什么?
解决浮点型运算精度失真问题。
BigDecimal的对象如何获取?
通过valueOf方法:
BigDecimal b1 = BigDecimal.valueOf(0.1);
Original: https://blog.csdn.net/m0_71485750/article/details/127282133
Author: 蓝桉cyq
Title: Java API – Math类-System类-BigDecimal类的常用API
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/722137/
转载文章受原作者版权保护。转载请注明原作者出处!