java - 为什么在将 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);
}
解决方案
发生这种情况是因为 java 会自动转换类型,如果它不会导致准确性损失。它可以将 int 转换为 double,但不能将 double 转换为 int,因为小数部分会丢失(当然您可以手动进行)。你可以在这里阅读它https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
推荐阅读
- docker - 从 linuxserver\deluge 构建
- css - SCSS 祖先敏感选择器
- javascript - 建筑计算器 - 没有让它工作
- javascript - Node.js“net.createConnection()”错误回调未发出
- sql - 引用使用 case 语句创建的变量
- typescript - 如何在另一个组件中路由并在第一个组件中返回时保留来自 nativescript-localstorage 的表单数据
- python - Cleaning list to remove semi-duplicate values
- git - 如何显示存储库中的所有分支?
- php - PHPMailer - 语言字符串加载失败 - 在哪里执行?
- rust - 存储 Rust 结构的不可变实例,但在哪里?