java – Double to Int,没有任何有损精度
发布时间:2020-12-15 08:27:17 所属栏目:Java 来源:网络整理
导读:以下声明给出了编译时错误“错误:(19,13) java:不兼容类型:可能从double转换为int的有损转换” int i1 = 10.0;// Error:(19,14) java: incompatible types: possible lossy conversion from double to int 问题1 我理解错误,但编译器可以不推断 – 在这种
以下声明给出了编译时错误“错误:(19,13)
java:不兼容类型:可能从double转换为int的有损转换”
int i1 = 10.0; // Error:(19,14) java: incompatible types: possible lossy conversion from double to int 问题1 我理解错误,但编译器可以不推断 – 在这种特殊情况下 – 不会有精度损失? 问题2 如果我显式地将double转换为int然后它编译很好(甚至不是警告),即使我在这个例子中肯定会失去精度 int i2 = (int)9999999999999.999999999; 如果我无法编译第一种情况 – 没有发生丢失 – 那么为什么第二个显式转换示例甚至不会生成编译器警告? 解决方法
回答问题1
根据编译器的精度损失,因为编译器只看到左边有一个int变量,右边有一个double值.编译器不是那么聪明,以至于在转换为int时10.0不会失去精度. 理论上可以构建编译器以允许编译该语句,但这样做没有实际好处.几乎没有人写int x = 10.0. 回答问题2 实际上,精度有所下降,但为什么编译器不抱怨?因为你使用了演员.你写了(int).这是您向编译器显示您知道自己在做什么.通过编写演员表,你告诉它你知道可能会失去精确度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 使用Spring MVC的“Hello World”SOAP Web服务
- Android下保存数据到SharePreference和从SharePreference读
- 详解Springboot事务管理
- java-Rabbitmq引发AmqpException:类[B没有找到方法
- java-将不同的csv文件另存为单个excel工作簿中的不同工作表
- java – 如何在windows7中以管理员身份进行复制
- java – 失败的原因是什么:“jarsigner:尝试将{file}重命
- java网络编程基础知识介绍
- VHDL中的可变长度std_logic_vector初始化
- Java编程实现比对两个文本文件并标记相同与不同之处的方法