java - 我不明白“从 double 到 int 的可能有损转换”是什么意思
问题描述
public class MyClass {
public static void main(String args[]) {
int n,h,w,i;
double t;
h = 40;
w = 5;
i = 2;
t = 0.22;
n=(h*w-i)-t*(h*w-i);
System.out.println(n);
}
}
在第 13 行它说“/MyClass.java:9:错误:不兼容的类型:可能有损从 double 转换为 int n=(h w-i)-t (h*wi);”,这是什么意思,以及如何我要修复它吗?
解决方案
这是什么意思:t
作为一个双精度,表达式(h*w-i)-t*(h*w-i)
返回一个双精度 (154.44)。然而,n
作为一个 int,您尝试将一个 double 值分配给一个 int 变量。这会导致错误,因为这种转换不是由 Java 隐式完成的,因为它会是有损的(在规范中称为 Narrowing Primitive Conversion:https ://docs.oracle.com/javase/specs/jls/se7/html/jls- 5.html)。“缩小原始转换可能会丢失有关数值整体大小的信息,也可能会丢失精度和范围。” 意味着:您会丢失有关小数的信息。
如何处理它:这取决于期望的结果: - 你想要一个双返回值 => 制作n
一个双变量 - 你想要一个 int 返回值 => 强制(h*w-i)-t*(h*w-i)
转换为 int。要么是强迫它 int: n=(int)(…)
。或者通过使用//(https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html(int)Math.round()
)显式使其更加透明.floor()
.ceil()
推荐阅读
- lua - Lua 从文件导入数据,将数据从文件转换为数组
- python - 按名称为 keras TimeDistributed 层设置权重
- swift - Swift 4 中的 AlamofireImage 问题
- woocommerce - woocommerce - 仅在订单状态为“完成”时发送新订单电子邮件
- react-native - 无法在“窗口”上执行“postMessage”:未找到与提供的签名匹配的函数
- arrays - 如何使用多个条件查找查询在 MongoDB 中指定字段?
- sql-server - Docker compose 和 microsoft/mssql-server-linux:如何运行 init sql 脚本?
- javascript - 返回 javascript 对象的特定值
- vb.net - 如何关闭使用 Oledb.oledbconnection 打开的 Excel 工作表
- java - jax-rs 如何在 REST 服务器中实现 webhook 侦听器?