关于条件运算符的奇怪行为

时间:2019-05-17 20:46:03

标签: java string integer double conditional-operator

基本上我有这段代码:

double booster = 1d;
String result = booster % 1d == 0 ? ((int) booster) + "" : booster + "";

根据输入结果返回1或1.X的地方。

这是我正在使用的“固定代码”,以确保行为符合我的预期。我的问题是这样的:

double booster = 1d;
String result = String.valueOf(booster % 1d == 0 ? ((int) booster) : booster);

出于某种奇怪的原因,它会返回1.0而不是1。如果我添加了+“”,它将具有正确的行为:

double booster = 1d;
String result = String.valueOf(booster % 1d == 0 ? ((int) booster) + "": booster);

让这有点奇怪的是,下面的代码可以正常工作,我希望它能像处理X.0数字时那样混乱。

double booster = 1d;
String result = booster % 1d == 0 ? String.valueOf((int) booster) : String.valueOf(booster);

有人知道为什么会这样吗?

0 个答案:

没有答案