Java 如何将整数除以双精度?
应为Java 如何将整数除以双精度?,java,Java,应为213333333…,但为320.0。为什么? int integ = 320; System.out.println((double) integ / (double) (3/2)); 我的意思是:我在使用double,为什么我要得到整数?3/2是整数除法,结果是1(将其转换为double会导致1.0)。因此,将320除以1.0 改为使用1.5(或3.0/2,如果必须的话)。您正在对除法后的double进行强制转换,这是用整数算法执行的。强制浮点运算的最简单方法是将其中一个操作数设为双精
213333333…
,但为320.0
。为什么?
int integ = 320;
System.out.println((double) integ / (double) (3/2));
我的意思是:我在使用double,为什么我要得到整数?
3/2
是整数除法,结果是1
(将其转换为double会导致1.0
)。因此,将320除以1.0
改为使用
1.5
(或3.0/2
,如果必须的话)。您正在对除法后的double
进行强制转换,这是用整数算法执行的。强制浮点运算的最简单方法是将其中一个操作数设为双精度:
int integ = 320;
System.out.println((double) integ /(3.0/2));
或者,如果输入值是变量:
int x = 3;
int y = 2;
System.out.println((double) integ /(1.0*x)/y);
您不应该将操作结果强制转换为双精度。而是强制所有操作数都是双精度的。(3/2)应该是(3.0/2.0)奇怪的,一个拥有11.7k声誉的人问这个问题。
3/2
是1
<代码>(双精度)(3/2)是(双精度)1
,即1.0
。如果您想要1.5
,请使用1.5
,或3.0/2
@Aimnox,而不是3d
,因为我们使用的是双精度: