Java - Double和Int Error

时间:2015-09-25 11:06:04

标签: java

我有一个像这样的变量

int tff = 100;
double x = (45/100) * tff;
int y = (int) (tff - x);
System.out.println(y);

应输出55,但为什么输出为100?

4 个答案:

答案 0 :(得分:2)

您需要将值标识为它们所代表的特定数字类型。您可以在许多示例中注意到它。例如,没有100d100.0标识符的简单数字将始终作为整数处理。

你可以在这样的数字之后使用类型的标识符。

int tff = 100;
double x = (45/100d) * tff;
int y = (int) (tff - x);
System.out.println(y);

您可能需要此标识符的其他示例可能很长。

// This wont compile since it is out of the integer range
long l = 12312354345346;
// This will compile since it is declared to be a long
long l = 12312354345346l;

答案 1 :(得分:1)

(45/100)为两倍时,

(45/100)= 0.45 (45/100)为整数时,(45/100)= 0 。所以应该强制(45/100)加倍如下:

double x = ((double)45/(double)100)* tff;

答案 2 :(得分:0)

45integer100integer45/100 == 0

您可以尝试使用45.0100.0代替

int tff = 100;
double x = (45.0/100.0) * tff;
int y = (int) (tff - x);
System.out.println(y);

或者您可以将数字转换为双打:

double x = (((double)45)((double)/100)) * tff;

答案 3 :(得分:0)

如果你不先把它加成双。你会得到一个int。所以你的价值会低于'1',java认为它是零。所以,你必须这样做:

int tff = 100;
int value1 = 45;
int value2 = 100;
double x = ((double)value1 / (double)value2) * tff;
int y = (int)(tff - x);
System.out.println(y);

输出将是:55!