It is often avoidable in many embedded systems, but sometimes, it is quite difficult to avoid and it comes in very handy to have a floating point unit on board and make use of it. Once such example is in industrial motion control systems. The user may want to control the speed of the machine in terms of his/her "user units", which could be "coffins-per-minute" or packets per minute, or feet-per-second, or chasses-per-hour, etc... Your system needs to be able to handle fractional user units, and convert them into the appropriate encoder revolutions and through whatever gearbox ratios to motor revolutions. While it could be done by limiting the user to specific increments of user units he can choose, this isn't always acceptable. It is alot easier and more straightforward to be able to simply calculate, for example, the 32.347 feet per second the user wants in floating point into the nearest integer number of motor revolutions and encoder counts. But, if one is always working in lower level machine units, then using all integer math or scaled integer math common in fixed point DSPs is still common.