Может быть, я не вижу очевидной вещи, но:
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (y2-y1)/(x2-x1);
System.out.println(res);
Выход:
0.0
Почему?
Может быть, я не вижу очевидной вещи, но:
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (y2-y1)/(x2-x1);
System.out.println(res);
Выход:
0.0
Почему?
вам нужно изначально определить эти переменные как двойные, и это должно работать.
double
- person doublesharp; 31.10.2012
Проблема в том, что вы занимаетесь целочисленной арифметикой. Вам нужно приведение типов, чтобы сначала преобразовать числитель или знаменатель в число с плавающей запятой (например):
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
Если вы выполняете деление на целые числа, результат усекается до ближайшего целого числа (что дает тот же результат, что и операция с полом). Например:
0 / 2 == 0
1 / 2 == 0
2 / 2 == 1
3 / 2 == 1
и т.п.
пытаться
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
Вы должны упаковать его «во время» выполнения операции, а не после
приведите (y2-y1)/(x2-x1)
к удвоению, как показано ниже:
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
Output: 0.3333333333333333
double res = (y2-y1)/((double)x2-x1);
- person irrelephant   schedule 31.10.2012