侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

数字处理和MD5

coydone
2021-01-29 / 0 评论 / 0 点赞 / 351 阅读 / 2,704 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

数字处理工具类

数字处理类通常在金融、货币相关业务中使用,对精度的要求需要准确。

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==
    }
}
0

评论区