It does not; it means only that you know for sure that a long double uses twice as much memory as a double. The storage space is, at heart, a set of binary values, and these binary values are used to represent a decimal value. How those binary values are interpreted to a decimal value is not laid down in the standard, and is implementation specific. There are some decimal values that simply can never be represented exactly with a given float implementation.
Take a look here, where pi is specifically used as an example:
http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding
What do you mean by "twice as precise"? If you have a representation of pi as 3.1, and then another representation of it as 3.14, how much "more" precise is that? It's about 0.04 closer, so you could say it's about 1 percent more precise, or 1.01 times as precise, but you've had to use
fifty percent more storage space to get this 1 percent precision improvement.
As you've realised, when you get to the actual mechanism of how numbers are represented inside the computer, things get interesting. It's definitely worth reading up on how numbers work inside the machine, and ultimately it's up to you to decide how much error is acceptable in your values, and use a primitive type or library-provided type that meets your requirements.