首页 > 解决方案 > 为什么在将 Integer 转换为 double 时计算函数不给出错误?

问题描述

为什么下面的代码工作正常并且没有抱怨 Function 的返回类型是 Integer 而不是 Double?

    public static void main(String[] args) {
          double principle = 100;         
          int interestrate = 5;         
          double amount = compute(principle, x->x*interestrate);
    }
    public static double compute(double base, Function<Integer, Integer > func){ 
        return func.apply((int)base); 
    }

标签: javafunctionintegerdouble

解决方案


发生这种情况是因为 java 会自动转换类型,如果它不会导致准确性损失。它可以将 int 转换为 double,但不能将 double 转换为 int,因为小数部分会丢失(当然您可以手动进行)。你可以在这里阅读它https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html


推荐阅读