gpt4 book ai didi

java - 使用内联条件语句格式化小数

转载 作者:行者123 更新时间:2023-11-30 05:55:55 28 4
gpt4 key购买 nike

我想知道为什么与下面的代码不一致。我希望得到相同的输出,但是当使用内联条件语句时,它会在字符串中附加一个 .0。我的代码有错误吗?

    double d = 10.1;

String rounded = (false ? d : Math.round(d)) + "";
System.out.println(rounded);//10.0

rounded = Math.round(d) + "";
System.out.println(rounded);//10

最佳答案

Math.round 返回一个long,因此条件运算符的两个操作数的类型不同,因此遵循更复杂的规则来确定整体操作的类型,如 JLS §15.25 中所定义:

Otherwise, binary numeric promotion (§5.6.2) is applied to the operand types, and the type of the conditional expression is the promoted type of the second and third operands. Note that binary numeric promotion performs unboxing conversion (§5.1.8) and value set conversion (§5.1.13).

从 5.6.2 开始,二进制数字提升:

If either operand is of type double, the other is converted to double.


并为了说明条件运算符的陷阱和一些乐趣,来自 Java puzzlers (谜题 8):

char x = 'X';
int i = 0;
System.out.print(true ? x : 0); // prints X
System.out.print(false ? i : x); // prints 88 => (int)X

另外,查看 HamletElvis示例(视频链接)。

关于java - 使用内联条件语句格式化小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662156/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com