It’s a coding practice. I read these numbers as double from a file:
112233 445566
8717829120000 2.4
16000000 1307674.368
10000 2092278988.8
1234567 890123
After some computation, I should output some of them. I want to make them appear just the same as in the file, no filling zeros, no scientific notation, how could I achieve it? Do I have to read in as string then convert them?
Edit: Erm…Do you guys mean that there is actually no way for the program to know how the numbers look like originally?
If you want the output to be identical to the input, then yes, you need to read them in as strings and store the strings to be output later.
Why? When dealing with floating point numbers, the computer can’t represent most decimal fractional parts exactly in binary. So in a number like 2.4, the internal representation won’t be exactly 2.4, it will be slightly different. Most of the time, the C/C++ I/O libraries will take such a binary number and print 2.4, but for some numbers, it might print something like 2.40000000001 or 2.399999999.
So, that’s why you want to keep the original strings around.