Java If-Else的条件(小数位数)

Java If-Else的条件(小数位数),java,decimal,if-statement,Java,Decimal,If Statement,有没有一种方法可以根据一个数字的小数位数来执行一段代码。例如,如果double是2.0,我想把它转换成一个整数,但是如果它是2.43426,我想把它保留为double。谢谢 不确定,但会: double d = 2.0; if ((long) d == d) { // then } 为你工作?这只会回答您在特定情况下的问题。不确定,但会: double d = 2.0; if ((long) d == d) { // then } 为你工作?这只回答了您在特定情况下的问题

有没有一种方法可以根据一个数字的小数位数来执行一段代码。例如,如果double是2.0,我想把它转换成一个整数,但是如果它是2.43426,我想把它保留为double。谢谢

不确定,但会:

double d = 2.0;

if ((long) d == d) {
    // then
}
为你工作?这只会回答您在特定情况下的问题。

不确定,但会:

double d = 2.0;

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

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

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

double precision = 1e-10;

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

可以按如下方式指定精度和转换:

double precision = 1e-10;

int rounded = Math.round(x);
if (Math.abs(x-rounded) > precision) System.out.print(x)
else System.out.print(rounded);
  • 将双精度转换为字符串
  • 使用正则表达式,找到小数点,然后得到小数点后的字符数
  • 在你的if-else中使用它
  • 将双精度转换为字符串
  • 使用正则表达式,找到小数点,然后得到小数点后的字符数
  • 在你的if-else中使用它
  • 快速而肮脏的解决方案如下:

    double foo = 2.43426;
    int count = String.valueOf(foo).split(".")[1].toCharArray().length;
    if(count > 1){
        // do stuff
    }
    
    快速而肮脏的解决方案如下:

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

    如果这是你想要的:


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

    “正确”的方法是使用:


    但是,它确实本地化了十进制分隔符(我得到的是逗号而不是点)。如果这是一个问题,您只需调用
    fmt.setDecimalFormatSymbols(新的DecimalFormatSymbols(Locale.ROOT))

    ,如果这是您想要的:


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

    “正确”的方法是使用:


    但是,它确实本地化了十进制分隔符(我得到的是逗号而不是点)。如果这是一个问题,您可以调用
    fmt.setDecimalFormatSymbols(新的DecimalFormatSymbols(Locale.ROOT))

    您能举个例子说明这是如何有用的吗?(记住Java是一种静态类型语言)我将把它们转换成字符串并写出它们,所以我希望它说3而不是3.0,但不是3而不是3.4324。我可能是用完全错误的方法来做的,哈哈,这只是一个输出格式的问题。你能举个例子说明这是如何有用的吗?(记住Java是一种静态类型语言)我将把它们转换成字符串并写出它们,所以我希望它说3而不是3.0,但不是3而不是3.4324。我可能是用完全错误的方法来做的,哈哈,这只是一个输出格式的问题,我会试试看;这似乎是可行的。如果有,我会接受你的回答!您应该考虑使用<代码>长< />代码>而不是<代码> int >代码>。这似乎是可行的。如果有,我会接受你的回答!您应该考虑使用<代码>长< />代码>而不是<代码> int <代码>。