在 Java 中将两个整数转换为双精度数
Transformation of two integers into a double in Java
这是任务:
在class“Functionality.java”中实现名为“createDouble”的静态public方法。该方法获取两个整数值 a 和 b 作为输入,应将它们转换为双精度值并 return 如下所示:
- 第一个输入值a,应该放在逗号或点之前。
- 第二个输入值 b,应该在逗号或点之后,多余的零应该被删除。
不能使用导入来解决此任务。也禁止使用数学库或其他库。实现一种至少包含一个有意义的循环的算法。
这是我的想法:
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
这是任务:
在class“Functionality.java”中实现名为“createDouble”的静态public方法。该方法获取两个整数值 a 和 b 作为输入,应将它们转换为双精度值并 return 如下所示:
- 第一个输入值a,应该放在逗号或点之前。
- 第二个输入值 b,应该在逗号或点之后,多余的零应该被删除。
不能使用导入来解决此任务。也禁止使用数学库或其他库。实现一种至少包含一个有意义的循环的算法。
这是我的想法:
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