对于这个代码块:

int num = 5;
int denom = 7;
double d = num / denom;

d值为0.0。它可以通过施法强制工作:

double d = ((double) num) / denom;

但是有没有其他方法可以得到正确的双重结果呢?我不喜欢使用原始类型,谁知道会发生什么。


当前回答

就用这个。

int fxd=1;
double percent= (double)(fxd*40)/100;

其他回答

可以使用以下语句:

double step = 1d / 5;

(1d是双重施法)

我不喜欢使用原始类型,谁知道会发生什么。

为什么你对施放原语有一种非理性的恐惧?当你将int类型转换为double类型时,没有什么不好的事情发生。如果您只是不确定它是如何工作的,请查阅Java语言规范。将int类型转换为double类型是一种扩大基元转换。

你可以通过强制转换分母而不是分子来消除额外的一对括号:

double d = num / (double) denom;

就用这个。

int fxd=1;
double percent= (double)(fxd*40)/100;

只要加上“D”。

int i = 6;
double d = i / 2D; // This will divide bei double.
System.out.println(d); // This will print a double. = 3D

铸造原语有什么问题?

如果你因为某种原因不想施法,你可以这样做

double d = num * 1.0 / denom;