There is a strange behavior I cannot understand. Agreed that float point number are approximations, so even operations that are obviously returning a number without decimal
I can't answer why the second one works and the first one doesn't. However, I can tell you that 195.95 is a non-terminating decimal in binary, and as such round off errors like this one are bound to happen.
Try converting to a double rather than float. You could also use a money or a decimal type rather than a float. That will store the number differently and more accurately.
For more on floating point numbers and the IEEE representation, go here:
http://en.wikipedia.org/wiki/IEEE_754