在 Java 中将两个整数转换为双精度数

Transformation of two integers into a double in Java

这是任务:

在class“Functionality.java”中实现名为“createDouble”的静态public方法。该方法获取两个整数值 a 和 b 作为输入,应将它们转换为双精度值并 return 如下所示:

不能使用导入来解决此任务。也禁止使用数学库或其他库。实现一种至少包含一个有意义的循环的算法。

这是我的想法:

public class Functionality {

    public static double createDouble(int a, int b) {
        double c = b;
        double d = 1;
        while (c >= 1) {
            c /= 10;
            d *= 10;
        }
        return a + b/d;
    }

    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(createDouble(12, Integer.MAX_VALUE));
    }
}

问题是我正在使用我不应该使用的方法 Integer.MAX 值。是否有其他选项来编写此代码?

这是我的实现

public class Functionality {
    private static double logb10(double num){
        return (num > 1) ? 1 + logb10(num / 10) : 0;
    }
    public static double createOtherDouble(int a, int b) {
        double c = a;
        int len =(int) logb10(b);
        double d = b;
        for(int i = 0; i < len; i++){
            d /= 10;
        }
        return c + d;
    }
     public static void main(String []args){
        System.out.println(Integer.MAX_VALUE);
        System.out.println(createOtherDouble(12, Integer.MAX_VALUE));
     }
}

你的代码看起来不错,只是我会做的一个小星期。您的变量 c 将等于您希望 b 在完成除法后的值,因此您可以直接使用它。否则,您根本不需要使用 Integer.MAX_VALUE。只需使用任意值。

public class Functionality
{
  public static double createDouble(int a, int b) {
    double c = b;
    while(c >= 1)
      c /= 10;
    return a + c;
  }
  
  public static void main(String[] args) {
    System.out.println(createDouble(15, 351));
    System.out.println(createDouble(32, 8452));
  }
}

输出:

15.351
32.8452