java - 使用 BigDecimal 舍入?

标签 java encryption rsa rounding bigdecimal

我一直在尝试在java中使用bigdecimal进行舍入,并且遇到了java.lang.ArithmeticException错误,该错误显示非终止十进制扩展。

谁能解释一下错误的根源,因为我对java很陌生?并帮助我编写代码?

谢谢

protected BigDecimal p;
protected BigDecimal q;
protected BigDecimal d;
protected BigDecimal det;
protected BigDecimal exp;
protected int e;

    this.p = pq.getP();
    this.q = pq.getQ();

    det = ((p.subtract(BigDecimal.ONE)).multiply(q.subtract(BigDecimal.ONE)));
    exp = new BigDecimal(String.valueOf(e));

    d = (det.divide(exp).setScale(2,BigDecimal.ROUND_HALF_UP));

变量“d”是我认为发生错误的地方。

最佳答案

进行分割时需要设置比例。

d = det.divide(exp, 2, BigDecimal.ROUND_HALF_UP);

注意:使用带有舍入的 double 可能会更干净且不易出错。

exp = new BigDecimal(e); // does the same thing if e is an int

关于java - 使用 BigDecimal 舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36457157/

相关文章:

java - Azure 将 blob 容器复制到另一个具有不同层的 blob 容器 [java]

c# - 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

java - Java 中的数据集类?

c# - .NET 中的简单 rsa 加密/解密?

javascript - 使用 Javascript 加密数据,使用私钥/公钥解密 C# 中的数据

c++ - 如何在基数 256 中以其唯一的 xLen 数字表示形式写入整数 x?

encryption - 将单行RSA私钥SSH key 转换为多行

java - RSA - Java 的 KeyFactory 失败,而 bouncycaSTLe 的 PEM 解析器成功

java - LoadBalancer 背后的 OAuth2 授权

java - 具有第三个值的 XYdataset Jfreechart 标签图