As mentioned by other commenters, this is common among all languages that use IEEE 754 floating-point numbers—that is to say, all languages that run on modern computers.
The reason for this is that IEEE 754 has been implemented at the hardware level, right down to the tricky
NaN /= NaN behavior. That’s basically why we can’t fix it: creating an alternate system means skipping over all those hardware optimizations using this system. In effect, to get away from these issues we’d either need to create a much slower numeric computation stack or make our own hardware. Neither of those is particularly tenable!