We call the integer type
Int even though it isn't a correct model of Z (addition isn't even total!), because it's still the most widely-used computational type for working with the integers we typically encounter. Similarly, it's reasonable to call these types
Real even though they aren't a correct model of R, because:
- While bignum integers are successfully deployed in some languages, IEEE floating point is basically the only widely-used approximation to R. There are a few niche alternatives, but they are extremely niche.
- Unlike integers, there can be no computational model of R, so there's no "clearly better" model to reserve the name for.
I.e. you can make a coherent argument that
Int should have been reserved for a "true integer" type. You can't coherently argue that
Real should be reserved for a "true real number" type, because that type cannot exist.
IEEE floating point makes some design decisions that you personally do not agree with. It makes some decisions that I don't agree with, too. But it is--by multiple orders of magnitude in both support and performance--the most successful computational model of the real numbers, so it's very hard to justify holding out the name
Real for some other model that we can't even point to a sketch of. That would cut very, very hard against Swift's goal of being a "pragmatic" language.