This expression:
(9/5)
is composed entirely of integers, therefore it is computed using integer
math, which discards the fractional part and evaluates to 1.
So your program is really doing this calculation:
fahr = -17 * 1 + 32
Which evaluates to 15.
To fix this behavior, get in the habit of adding .0 after any number
that you want to be treated as a float, like so:
fahr = celsius * (9.0/5.0) + 32.0;
This will give the correct results.
(Your second example works because without the parentheses, the first
operation is to multiply celsius by 9. One of those numbers is a float,
so the calculation is done as a float. Then that result is divided by
five, and again one of the numbers is a float, so the calculation is done
as a float.)
--
John Gordon A is for Amy, who fell down the stairs
gor...@panix.com B is for Basil, assaulted by bears
-- Edward Gorey, "The Gashlycrumb Tinies"