【发布时间】:2019-08-25 05:19:24
【问题描述】:
在 5.6.2 的 JLS 中。二进制数字提升:
当运算符对一对操作数应用二进制数值提升时,每个操作数都必须表示一个可转换为数值类型的值,按顺序适用以下规则:
如果任何操作数属于引用类型,则将对其进行拆箱转换(第 5.1.8 节)。
加宽原语转换(第 5.1.2 节)适用于转换以下规则中指定的一个或两个操作数:
如果任一操作数是 double 类型,则另一个将转换为 double。
否则,如果任一操作数为浮点类型,则将另一个转换为浮点类型。
否则,如果其中一个操作数是 long 类型,则另一个将转换为 long。
否则,两个操作数都转换为 int 类型。
这让我很困惑,因为两者 http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html 和 https://alvinalexander.com/java/java-int-double-float-mixed-type-division-arithmetic-rules
说明
算术运算(+、-、*、/)中的所有浮点值(float 和 double)在执行算术运算之前都会转换为 double 类型。
据我了解,根据 JLS,添加 1 个浮点数和 1 个整数会导致浮点数。但是,根据其他消息来源,添加 1 个浮点数和 1 个整数会导致双精度数?
【问题讨论】:
标签: java type-promotion