Hmm, yes, it can be represented in ASCII. But you still have to approximate when storing it in a way that is actually useful for computation using a finite number of bits.
Many real programming languages support arbitrary precision decimal and/or rational numbers.
Sure, there are times when space or speed concerns favor inexact representation over correctness, but that's an optimization that ought to be properly evaluated; the fact that lots of languages are designed in a way which makes it the default everyone reaches for contributes to lots of errors.
Yes. Common Lisp is an example of a language that can represent rationals exactly and do arithmetic on them. You can avoid floating-point precision loss by using this method. But there are drawbacks:
1) The numerator and denominator will often turn into bignums as a calculation progresses, consuming ever-larger amounts of space and time, and
2) This won't help you with any calculation involving irrationals, except to prevent your initial imprecision from growing larger.
As 1/3 - exactly as it's on your screen. All rational numbers can be represented exactly.