Мне нужно вычислить некоторое простое математическое выражение, но когда я делаю это в одной строке, результат всегда будет равен нулю. Но правильный результат, очевидно, не равен нулю. И это интересно, но когда я отделяю части выражения, я получаю правильный ответ. Позже я разделю с этим результатом, поэтому оно не должно быть 0.C++ неправильный результат математического выражения
Выражение как это:
(X-X1)/(X2-X1)
В этом случае дельта: 0
double delta = (x - x1)/(x2 - x1);
Но таким образом, delta будет правильным:
double top = x - x1;
double bottom = x2 - x1;
double delta = top/bottom;
Есть ли у вас какие-либо идеи, как это могло случиться?
Я принимаю его x, x1 и x2 являются целыми значениями, а 'x2-x1' больше, чем' x-x1'? –
Возможный дубликат [Я не удосужился изучить C до взлома на ядре Linux] (http://google.com/search?q=integer+division+c) – 2013-03-21 14:49:19
Да, они беззнаковые long int и да, x2 -x1 больше. –