【发布时间】:2020-11-05 15:31:41
【问题描述】:
这是任务:
在“Functionality.java”类中实现一个名为“createDouble”的静态公共方法。该方法获取两个整数值 a 和 b 作为输入,并将它们转换为双精度值并返回如下:
- 第一个输入值 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 值。是否有另一种选择来编写此代码?
【问题讨论】:
-
我不明白你的老师为什么要你使用循环。这个项目是纯粹的位操作。你正在将两个 4 字节的值转换成一个 8 字节的值。
-
我的意思是,可能是因为他们正在学习循环和位操作,不是吗?
-
有一个公式可以将小数转换为分数,两个整数。它是迭代的,并且怀疑这是相反的。
-
Markspace 是指 IEE754 吗?
-
我认为 IEEE754 在这里不合适。处理偏移量和隐含位可能超出了本练习的范围。
标签: java eclipse integer double algebraic-data-types