我正在try 计算leaseRate,这是一个很大的分数点,但我收到以下错误: Non-terminating decimal expansion; no exact representable decimal result个 我知道这是个圆形问题,但是我想我用MathContext precision = new MathContext(2);解决了这个问题.

这一期我举了一个小例子:

public class Test {
  public static void main(String[] args) {
    MathContext precision = new MathContext(2);
    int mileage = 10;
    int duration = 20;
    BigDecimal price = new BigDecimal("34234.34",precision);
    double interestRate = 4.57;
    BigDecimal bMileage = new BigDecimal(mileage, precision);
    BigDecimal bDuration = new BigDecimal(duration,precision);
    BigDecimal bInterestRate = new BigDecimal(interestRate,precision);
    BigDecimal leaseRate = ((((bMileage.divide(
        new BigDecimal(12,precision))).multiply(bDuration)).divide(
        price)).add(
        ((bInterestRate.divide(new BigDecimal(100,precision))).multiply(
            price)).divide(new BigDecimal(12,precision))));
    System.out.println(leaseRate);
  }
}

我的代码出了什么问题?

推荐答案

MathContext作为第二个参数传递给divide的每个调用,例如

bMileage.divide(new BigDecimal(12), precision)

Java相关问答推荐

空手道比赛条件

Oracle DUAL表上使用DDL时jOOQ问题的解析'

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

计算两个浮点数之间的距离是否对称?

测试期间未执行开放重写方法

Jenv-相同的Java版本,但带有前缀

Domino Designer 14中的保存代理添加了重影库

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

如何使用Criteria Builder处理一对多关系中的空值?

如何在@CsvSource中传递空格作为值

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

为什么这种递归会有这样的行为?

使IntelliJ在导入时优先 Select 一个类或将另一个标记为错误

在Eclipse中可以使用外部字体吗?

Eureka客户端无法使用用户/通行证注册到Eureka服务器

如何在java中从以百分比表示的经过时间和结束日期中找到开始日期

如何使用命令行为Java应用程序生成烟雾测试用例

移动二维数组的行

如何在Java中立即显示ProgressBar对话框?

为什么方法接受协变类型的匿名泛型类对象?