Floating point numbers and arithmetic is not inaccurate. They are actually very accurate but a lot of developers have inaccurate assumptions about them. They can't exactly represent base 10 decimals. That's the only inaccuracy. If you have two floating point numbers and you let's say add or multiply them the result is always the closest floating point representation of the real result.
The list of misconceptions wouldn't reasonably fit in a comment, but if you are really interested and have a few minutes you could give that a read: https://zeta.one/floats-are-not-inaccurate/
Drive manufacturers aren't really at fault here. As long as you use the proper units everything is in order. There is no reason for drives to be an exact power of two, so TiB and 1024 don't really make sense here. The biggest offender and the only big player that still does it wrong is Microsoft by using non-standard units. The history behind the 1000/1024 confusion is IMHO really interesting: https://zeta.one/kilobyte-is-1000-bytes/