Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么输出在SOPLN中转换为浮点?_Java_Type Conversion_Core - Fatal编程技术网

Java 为什么输出在SOPLN中转换为浮点?

Java 为什么输出在SOPLN中转换为浮点?,java,type-conversion,core,Java,Type Conversion,Core,为什么在第一种情况下,OP从2转换为2.0 蒂娅 (x>5)?2.3:2,因为您正在返回2.3或2 它们应该是同一类型的。(因为返回类型应该相同) 由于2.3是双精度的,2被转换为双精度的 例如,如果您更改为: (x>5)?1:2 然后输出将为2。因为两者都是整数,不需要进行强制转换 如果使用if编写,将如下所示: int x = 5; System.out.println((x>5)?2.3:2); // OP-> 2.0 System.out.println((x==5)?10:

为什么在第一种情况下,OP从2转换为2.0

蒂娅

(x>5)?2.3:2
,因为您正在返回2.32

它们应该是同一类型的。(因为返回类型应该相同)

由于
2.3
是双精度的,
2
被转换为双精度的

例如,如果您更改为:

(x>5)?1:2

然后输出将为
2
。因为两者都是整数,不需要进行强制转换

如果使用
if
编写,将如下所示:

int x = 5;
System.out.println((x>5)?2.3:2); // OP-> 2.0
System.out.println((x==5)?10:20);// OP-> 10
如果包含此代码的方法的返回类型为
int
,则会出现错误

但是如果它是双精度的,那么您就可以了,因为
2
将被转换为
2.0


阅读更多信息。

好吧,您有三元运算符
?:
(x>5)?2.3:2
此运算符只有一个返回类型-必须与这两种情况匹配->因此,对于中的
2.3

返回类型
float
,您可以看到它发生的原因。三元运算符有一个类型。在这种具体的情况下,第二个和第三个操作数的类型可以转换为数值类型,因此应用

if(x > 5) 
   return 2.3
else
   return 2