Bug 141848
Summary: | Weird rounding of floats | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Bastien Nocera <bnocera> |
Component: | gcc | Assignee: | Jakub Jelinek <jakub> |
Status: | CLOSED NOTABUG | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 3 | ||
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2004-12-06 07:04:05 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Bastien Nocera
2004-12-04 00:19:48 UTC
There is nothing wrong on this, that's how floating point works. printf does no rounding. 1.01f is rounded when stored in float and the result is inexact too. E.g. 1.01 rounded to fit into float and double is: float 0x1.028f5cp+0 double 0x1.028f5c28f5c29p+0 and the exact number is actually 0x1.028f5c with period 0x28f5c. As you can see, when rounded to float it is slightly smaller and double is slightly bigger than the exact value. Therefore it is no surpise if this 0x0.0000028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c... difference multiplied by 100 already shows up among the important bits. |