3 ms·
It's easier to explain that decimal 0.1 in binary is 0.000110011001100110011001100110011001100110011001100110011001100110011001100... It's impossible to present
by Geee 14y ago
It's easier to explain that decimal 0.1 in binary is 0.000110011001100110011001100110011001100110011001100110011001100110011001100... It's impossible to present accurately with any combination of significand*2^exponent in a finite-memory binary system. Just like 1/3 in decimal system can't be written down accurately.
- haberman 14y agoSure, but it's not obvious what numbers can be represented exactly and which can't, and since the numbers get rounded on output to look exact, you can easily be misled into thinking that 0.1 can be represented.
- nova 14y agoAny rational number can be represented as a fraction p/q, where p and q are integers with no common factors (reduced fraction). If that fraction is representable as an exact "decimal" number in base b that means that p/q = m/b^n = m * b^(-n), where m and n are integers too. For example, 3/4 = 75/10^2 or 0.75 in decimal, 3/2^2 or 0.11 in binary. That means p * b^n = m * q. We said p and q have no common factors, so all of q's factors go into b^n. That means that q divides b^n, or in other words: p/q is representable as an exact "decimal" number in base b if and only if q divides some power of b. For example, 0.1 is 1/10. But there is no power of 2 which is divisible by 10, so 0.1 is not exactly representable in binary. As another example, 1/3=0.33333.... because there is no power of 10 divisible by 3.
- XaspR8d 14y ago> Just like 1/3 in decimal system can't be written down accurately. Or like integers in base pi! ;)
- eru 14y agoYou mean, some integers? 0 is perfectly representable. And so might be 1.