我有简单的代码测试请检查以下内容。为什么我的代码没有返回预期的结果。
public class test {
public static void main(final String a[]) {
final double d1 = 1 / 1000; // should be 0.001
final double d2 = 2 / 20; // should be 0.1
System.out.println(d1 + "--" + d2); // 0.0--0.0
}
}
答案 0 :(得分:10)
您要对整数进行除法,从而生成整数0
,这些整数存储为0.0
。
使用此:
final double d1 = 1d / 1000; // divide a double by an integer -> get a double
答案 1 :(得分:3)
你必须做
public static void main(String[] args) {
final double d1 = 1d / 1000; // 0.001
final double d2 = 2d / 20; // 0.1
System.out.println(d1 + "--" + d2); // 0.001--0.1
}
其中"d"
应该用于快速转换为双倍。
请记住,实际上你需要转换它们。 但是,如果其中一个是双,另一个将被隐式转换。
答案 2 :(得分:2)
您正在执行整数除法而不是双除法。
例如,更改为:
public class test {
public static void main(final String a[]) {
final double d1 = 1.0 / 1000.0; // 0.001
final double d2 = 2.0 / 20.0; // 0.1
System.out.println(d1 + "--" + d2); // 0.0--0.0
}
}
答案 3 :(得分:0)
使用
final double d1 = (double)1 / 1000; // 0.001
final double d2 = (double)2 / 20; // 0.1
System.out.println(d1 + "--" + d2); // 0.0--0.0
<强>原因:强>
1和100,都是整数。所以1/100肯定是一个整数。因此,虽然理论值是0.001,但因为它将返回一个整数,所以它将返回0.所以你需要将一个值转换为double。或使用像建议的破坏
答案 4 :(得分:0)
public class test {
public static void main(final String a[]) {
final double d1 = 1d / 1000d; // 0.001
final double d2 = 2d / 20d; // 0.1
System.out.println(d1 + "--" + d2); // 0.0--0.0
}
}
答案 5 :(得分:0)
试试这个,
public static void main(final String a[]) {
final double d1 = 1 / 1000d; // 0.001
final double d2 = 2 / 20d; // 0.1
System.out.println(d1 + "--" + d2); // 0.0--0.0
}
答案 6 :(得分:-2)
你正在进行整数除法,如果你不能通过其他六个帖子告诉你同样的事情。