help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Precision error in double


From: Robert Miles
Subject: Re: Precision error in double
Date: Wed, 14 Aug 2013 16:56:03 -0500
User-agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:23.0) Gecko/20100101 Thunderbird/23.0

On 8/7/2013 6:38 AM, coolhuds@gmail.com wrote:
Hi,

A large double value gets changed when printed with %Lf
Values upto the following combination gives proper results
9 digits before decimal / 6 digits after decimal
e.g. of a value with 9 digits before decimal printed with %Lf
Input : 3435537287.32
Output : 3435537287.320000

Once I increase the digits before decimal to 10, the values printed with %Lf 
adds garbage value.
e.g. of a value with 10 digits before decimal printed with %Lf
Input : 34355372871.3487
Output : 34355372871.348701
As you can see from the above output the input value is changed.

Is there any compile time option for g++ that can be used so that the value 
is'nt changed?

::Code Snippet::
double d2 =  34355372871.3487;
double d4 =  3435537287.3487;

printf("d2 = %lf\n", d2);
printf("d4 = %lf\n", d4);


Thanks,
Hudson

For this, you'd need an option to do all calculations in decimal
instead of the usual binary, in order to avoid the roundoff
errors in converting from decimal to binary and back.  Perhaps
30 years ago, some computers supported an option to do this.
I haven't seen any sign that a significant number of more recent
computers do.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]