数字处理工具类
数字处理类通常在金融、货币相关业务中使用,对精度的要求需要准确。
BigInteger
BigInteger:可以让超过Integer范围内的数据进行运算。
构造方法:public BigInteger(String val)
常用方法:
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
import java.math.BigInteger;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//大整数运算
BigInteger var1 = new BigInteger("27283782663738383324");
BigInteger var2 = new BigInteger("23782622839632333333");
System.out.println(var1.add(var2)); // var1+var2
System.out.println(var1.subtract(var2)); // var1-var2
System.out.println(var1.multiply(var2)); // var1*var2
System.out.println(var1.divide(var2)); // var1/var2
System.out.println(var1.remainder(var2)); // var1%var2
// [var1/var2, var1%var2]
System.out.println(Arrays.toString(var1.divideAndRemainder(var2)));
}
}
BigDecimal
BigDecimal:由于在运算的时候,float类型和double很容易丢失精度,为了能精确的表示、计算浮点数,Java提供了BigDecimal,不可变的、任意精度的有符号十进制数。
构造方法: public BigDecimal(String val)
常用方法:
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
DecimalFormat
DecimalFormat:Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子。例如,取2位小数。
示例:
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double pi=3.1415927;//圆周率
// 取一位整数,结果:3
System.out.println(new DecimalFormat("0").format(pi));
//取一位整数和两位小数,结果3.14
System.out.println(new DecimalFormat("0.00").format(pi));
//取两位整数和三位小数,整数不足部分以0填补,结果:03.142
System.out.println(new DecimalFormat("00.000").format(pi));
//取所有整数部分,结果:3
System.out.println(new DecimalFormat("#" ).format(pi));
//以百分比方式计数,并取两位小数,结果:314.16%
System.out.println(new DecimalFormat("#.##%").format(pi));
}
}
MD5工具类
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。MD5摘要算法被广泛应用在密码信息安全,之后被证实无法防止碰撞。用于存储加密的密码在数据库中。
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
//JDK1.8新增Base64
String newstr = Base64.getEncoder().encodeToString(md5.digest(str.getBytes("utf-8")));
//1.8之前使用sun.misc.BASE64Encoder(此类没有访问权限,在rt.jar中添加访问权限:sun/misc/*)
BASE64Encoder base64 = new BASE64Encoder();
base64.encode(md5.digest(str.getBytes("utf-8")));
明文转换为密文:
import java.security.MessageDigest;
import java.util.Base64;
public class Test {
public static void main(String[] args) throws Exception {
String password = "admin123456";
MessageDigest md = MessageDigest.getInstance("md5");
//通过MD5计算摘要
byte[] bytes = md.digest(password.getBytes("UTF-8"));
//存储的字符串使用A-Z a-z 0-9 / * BASE64编码算法
String str = Base64.getEncoder().encodeToString(bytes);//编码
System.out.println(str); //pmq7VoTEWWLYh1ZPCDRujQ==
}
}
评论区