Java中不同类型数据是不是可以运算?例如:单精度和int类型是不是可以直接相加?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中不同类型数据是不是可以运算?例如:单精度和int类型是不是可以直接相加?相关的知识,希望对你有一定的参考价值。

单精度和双精度是否可以?整形和单精度是否可以?如何解决?

在JAVA中,基本类型(除了boolean外)可以自动转换的,转换形式为:byte,short,char -- int --long--float--double这就是自动转换的顺序了,其中byte,short,char在运算时是自动转换为int型的,而int与long运算时自动转换为long型。从上可知,float与double运算时是自动转换为double再进行计算的,int与float运算时先转换为float再运算。也就是说,表述范围小的可以自动转换为表述范围大的,(表述范围不是指类型的大小)其次,如果你要得到某一类型的数值时,也可以通过强制转换来实现。 参考技术A 可以 参考技术B 可以

Java自动类型转换规则

自动类型转换遵循下面的规则:

  • 若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
  • 转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。
  • 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
  • char型和short型参与运算时,必须先转换成int型。
  • 在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

下图表示了类型自动转换的规则

 

以上是关于Java中不同类型数据是不是可以运算?例如:单精度和int类型是不是可以直接相加?的主要内容,如果未能解决你的问题,请参考以下文章

c语言 不同数据类型间的混合运算

C#double数据类型运算中的误差(乘以100得到的数据不准确)

java在啥情况下会发生自动类型转换

Java数据类型-精度失真问题

04-JAVA高精度数字

房上的猫:变量.数据类型与运算符