float и double - это числа с плавающей точкой по стандарту IEEE754. Операции с ними происходят достаточно быстро, тк они реализованы в процессоре на аппаратном уровне.
Но они достаточно не точные в плане выражения десятичных дробей. (То самое 0.1+0.2 != 0.3).
Настоящие деньги на них считать не следует.
Там - простое правило. Для денег - бери decimal. Всегда бери.
А для научных расчетов (там где копейка в младшем разряде роли не играет) - бери float/double.
Отличаются они разрядностью. Если экономить надо (матрицы чисел) - то бери float (32 bit).
Если просто нужна вещественная величина в переменной - то бери сразу double. Никто не будет
возражать.