| www.delorie.com/archives/browse.cgi | search |
| X-Spam-Check-By: | sourceware.org |
| Message-ID: | <440ACF12.7000403@cs.unipr.it> |
| Date: | Sun, 05 Mar 2006 12:44:18 +0100 |
| From: | Roberto Bagnara <bagnara AT cs DOT unipr DOT it> |
| User-Agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050929 Thunderbird/1.0.7 Fedora/1.0.7-1.1.fc4 Mnenhy/0.7.3.0 |
| MIME-Version: | 1.0 |
| To: | tprince AT computer DOT org |
| CC: | cygwin AT cygwin DOT com, |
| "The Parma Polyhedra Library developers' list" <ppl-devel AT cs DOT unipr DOT it> | |
| Subject: | Re: Precision of doubles and stdio |
| References: | <4408B886 DOT 5010209 AT cs DOT unipr DOT it> <4408C140 DOT 9030100 AT myrealbox DOT com> |
| In-Reply-To: | <4408C140.9030100@myrealbox.com> |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
Tim Prince wrote:
> Roberto Bagnara wrote:
>>
>> Hi there,
>>
>> the following little program
>>
>> #include <stdio.h>
>>
>> int main() {
>> double d;
>> scanf("%lf", &d);
>> printf("%.1000g\n", d);
>> return 0;
>> }
>>
>> does this on Linux/i686
>>
>> $ gcc -W -Wall in.c
>> $ a.out
>> 70.9
>> 70.900000000000005684341886080801486968994140625
>>
>> and does the following under Cygwin on the same machine:
>>
>> roberto AT quark /tmp
>> $ gcc -W -Wall in.c
>>
>> roberto AT quark /tmp
>> $ ./a.exe
>> 70.9
>> 70.90000000000000568434188608080148696899414
>>
>> Why? Is there a way to reconcile the two behaviors?
>> Notice that I know about the x87 and its vaguaries:
>> nonetheless I wonder why such a scanf immediately
>> followed by a printf shows a difference between
>> Cygwin and Linux.
> If you haven't gone out of your way to install similar printf() support
> libraries on cygwin and linux, they will definitely not be the same. My
> past reading of various relevant documents convinced me that digits
> beyond the 17th in formatting of doubles are not required by any
> standard to be consistent between implementations. They have no useful
> function, as 17 digits are sufficient to determine uniquely the
> corresponding binary value in IEEE 754 format.
Thank you Tim. We were unaware of this giant bug in the C standard.
All the best,
Roberto
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara AT cs DOT unipr DOT it
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |