当我使用双打在Java中将317除以219时,我得到1.
例如:
double b = 317/219;
System.out.println(b);
输出为:1。
这是因为它是一个重复的小数吗? 不得不使用BigDecimal而不是烦人的。
答案 0 :(得分:27)
试试这个
double b = 317/219D;
java中的默认编码类型是int
,因此,使用代码,java会使用两个int
数字,然后除法的结果为{{1} }也将截断小数部分以得到int
的最终结果。然后,此1
结果会从int
转换为int 1
而不会显示编译器警告,因为它是加宽强制转换(源类型保证“适合” “进入目标类型。”
将其中任何一个数字编码为double 1
,后跟double
(您也可以使用D
,但我总是使用大写字母,因为d
为小写{ {1}}看起来像L
),除法的结果也是l
。
答案 1 :(得分:5)
另一种选择......
double b = (double)317/219;
答案 2 :(得分:3)
这是因为你使用了整数文字,所以你要进行整数除法。
尝试改为编写double b = 317.0/219.0;
。
答案 3 :(得分:2)
值得一提的是,您的示例在运行时没有划分。在编译时计算317/219(整数除法,丢弃分数)并用常量替换。如果您反编译.class(我使用了Jad http://www.kpdus.com/jad.html),您将看到
double b = 1.0D;
答案 4 :(得分:0)
这是int
除法。写:
double b = 317.0/219;
System.out.println(b);
答案 5 :(得分:0)
因为你提出的数字是不合适的,所以答案也是如此 要获得双倍,您需要使用带浮点数的数字或者使用您使用的整数之一:
double b = 317.0/219;
System.out.println(b);
或:
double b = ((double)317)/219;
System.out.println(b);
答案 6 :(得分:-3)
你可以尝试
double b = 0.0;
b = 317/219;
这样我就可以返回小数点