If Else的条件(带小数位数)

时间:2011-12-27 15:25:34

标签: java decimal if-statement

是否有办法根据数字中的小数位数执行一段代码。例如,如果double只是2.0,我想将它转换为整数,但如果它是2.43426,我想把它留作双。谢谢!

5 个答案:

答案 0 :(得分:6)

不确定,但会:

double d = 2.0;

if ((long) d == d) {
    // then
}

为你工作?这只能在特定情况下回答你的问题。

答案 1 :(得分:0)

您可以指定精度并按以下方式转换:

double precision = 1e-10;

int rounded = Math.round(x);
if (Math.abs(x-rounded) > precision) System.out.print(x)
else System.out.print(rounded);

答案 2 :(得分:0)

  1. 将double转换为String
  2. 使用正则表达式,找到小数点,然后获取之后的字符数。
  3. 在if-else
  4. 中使用它

答案 3 :(得分:0)

快速而肮脏的解决方案如下:

double foo = 2.43426;
int count = String.valueOf(foo).split(".")[1].toCharArray().length;
if(count > 1){
    // do stuff
}

答案 4 :(得分:0)

如果这是你想要的:

  

我会将它们转换成字符串并将它们写出来,所以我希望它说3而不是3.0,而不是3而不是3.4324。

然后“正确”的方式是使用DecimalFormat

DecimalFormat fmt = new DecimalFormat("0.#");
fmt.setMaximumFractionDigits(Integer.MAX_VALUE);
assert "3".equals(fmt.format(3.0));
assert "3.4324".equals(fmt.format(3.4324));

然而,它确实是小数点分隔符的本地化(我得到一个逗号而不是一个点)。如果这是一个问题,您只需致电fmt.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ROOT))