This is what I said in # 11:

Actually, the problems are not at all the same. The integer multiplication overflowed. The float multiplication did not.

The integer multiplication returned an integer. The float multiplication returned a float. A float is bigger than an integer.

I agree that the size of an int is processor dependent. However, this forum concerns itself primarily with a single family of processors, and on those processors, a float IS larger than an int.

Anyway, to be technically accurate, what I meant to say was the the range of values that can be stored in a float on an Arduino Duemilanove (had to go look at the board to figure out how to spell that) is larger than the range of values that can be stored in an int.

A float on the A/D has a range from -3.4028235E+38 to 3.4028235E+38. An int has a range from -32,768 to 32,767.

OP's multiplication example (367 * 2001) computed a value of 734367 which overflowed the int.