浮点数二进制促销

时间:2019-04-03 15:45:20

标签: java type-promotion

在5.6.2中的JLS中。二进制数值促销:

  

当运算符将二进制数字提升应用于一对操作数时,每个操作数必须表示一个可转换为数字类型的值,以下规则适用:

     

如果任何操作数是引用类型,则将其进行拆箱转换(第5.1.8节)。

     

使用野生原语转换(第5.1.2节)来转换以下规则指定的一个或两个操作数:

     

如果一个操作数的类型为double,则另一个将转换为double。

     

否则,如果其中一个操作数的类型为float,则另一个将转换为float。

     

否则,如果其中一个操作数的类型为long,则另一个将转换为long。

     

否则,两个操作数都将转换为int类型。

这使我感到困惑,因为两者 http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.htmlhttps://alvinalexander.com/java/java-int-double-float-mixed-type-division-arithmetic-rules

声明

  

在执行算术运算之前,将算术运算(+,-,*,/)中的所有浮点值(浮点和双精度)都转换为双精度类型。

据我了解,根据JLS,将1浮点数和1整数相加将导致浮点数。但是,根据其他资料,将1的浮点数和1的整数相加会导致加倍?

1 个答案:

答案 0 :(得分:2)

当消息来源提出违反JLS的主张时,很有可能是错误的。在这种情况下,以下内容演示了JLS描述的行为:

kv