C ++ умножение числа с плавающей запятой на дробь - PullRequest
1 голос
/ 21 июня 2020

только что запустил C ++ из фона MATLAB и запутался.

float farenheit, celcius;
cin >> farenheit;
celcius = (farenheit - 32) * (5 / 9);
cout << "Temperature (c): " << celcius;

почему умножение на 5/9 не работает должным образом, а это работает?:

float farenheit, celcius;
cin >> farenheit;
celcius = ((farenheit - 32) * 5) / 9);
cout << "Temperature (c): " << celcius;

Спасибо !

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Всем спасибо,

C ++ интерпретирует 5 и 9 как значения int, поэтому 5/9 также является int. 5/9 = 0,566, который сокращается до 0.

Чтобы исправить это, добавьте .0 или .f к значениям, которые интерпретируются как double или float соответственно.

1 голос
/ 21 июня 2020

C ++ считает 5 и 9 целыми числами, а деление - целочисленным делением, что означает 5/9 = 0 (оно возвращает частное).

Поэтому используйте 5.0 и 9.0, если хотите, чтобы они были плавающими очков.

...