I wanted to create a vector with three values 1/6, 2/3 and 1/6. Obviously I Matlab has to convert these rational numbers into real numbers but I expected that it would maximize the precision available.
It’s storing the values as doubles but it’s storing them as –
b =
0.1667 0.6667 0.1667
This is a huge loss of precision. Isn’t double supposed to mean 52 bits of accuracy for the fractional part of the number, why are the numbers truncated so severly?
The numbers are only displayed that way. Internally, they use full precision. You can use the
formatcommand to change display precision. For example:will display them as:
So the answer is simple; there is no loss of precision. It’s only a display issue.
You can read the documentation on what other formats you can use to display numbers.