0.999 repeating forever is not nearly 1, it is exactly 1
Write a zero, a decimal point and nines that never stop, and you have not written a number a hair below 1. You have written 1 itself, in different clothes. Mathematicians can prove it with nothing fancier than comparing and adding ordinary decimals, yet many students, including maths majors, resist the conclusion.
The key is what the notation means. By the standard rules for decimals, 0.999... stands for the smallest number that is at least as big as every member of the list 0.9, 0.99, 0.999 and onward. Plot those on a number line and each sits left of 1, creeping closer. Any number below 1, however close, is eventually overtaken by some term in that list, so 0.999... cannot be smaller than 1. And any number above 1 already beats every finite string of nines, so it cannot be bigger either. What remains is 1.
Finishing the proof rigorously needs the Archimedean property: for every real number there is a whole number larger than it, which means no positive gap can be smaller than every step of one-tenth, one-hundredth and so on. In number systems that include infinitely small quantities, such as the hyperreals, that property fails, and the notation 0.999... is generally avoided because no smallest candidate exists.
The fact is not a lone oddity. Every terminating decimal other than zero has two spellings, so 8.32 can also be written 8.31999... with nines repeating. The same holds in other bases with their largest digit: in binary, 0.111... equals 1.
Why people balk is itself a research question in maths education. A popular shortcut multiplies one-third, written 0.333..., by 3, but the author Byers found it unconvincing to many students, who suspect the equals sign is doing something slippery. Most undergraduates he met would grant only that the two are very close, some saying infinitely close, without accepting that they are the same.
Source: 0.999...