2016-04-23 4 views
0

Я работаю над коротким проектом за последние два дня, но теперь все разваливается,потому что есть одно уравнение, которое возвращает 8.660254 при вычислении в C++/C#, но 0, когда вы пытаетесь вычислить ее вручную или с помощью калькулятора.C++ То же уравнение, но разные результаты с (Калькулятор vs C++)

Уравнение:

float mgr1 = (x + tr * 0.5f - tr/2) * 1.73205f * 10.0f; 

В моем случае:

x = 0; 
tr = 1; 
float mgr1 = (0 + 1 * 0.5f - 1/2) * 1.73205f * 10.0f; 

Правильный результат 0, но при расчете на C++, как это, она возвращает 8.660254? Я с ума сошел? Есть что-то о C++, чего я не знаю? Что это?

enter image description here

enter image description here

+6

Целое подразделение по 1/2 дает вам 0. Измените это на 1.0/2, и вы получите результат, которого ожидали ... * примерно * правильный. – Ian

ответ

4

Оператор/для целых чисел возвращает целое число, а не значение с плавающей точкой. 1/2 равно 0.

1.0/2 или 1/2.0 вернуть то, что вы ожидаете.

 Смежные вопросы

  • Нет связанных вопросов^_^