On Tue, 16 Dec 2014, Hartmut Holzgraefe wrote:
On 16.12.2014 15:16, xiangdongzou wrote:

 Can anyone tell me why 531808.11 has been changed to 531808.12 ?

typical decimal->binary->decimal conversion/rounding error.

never used DECIMAL nor intend to, but the issue is typical of precision issues among float (32-bit) and double (64-bit) in ANY programming language. Google for "IEEE floating point"

Some (most) users are unaware that a 32-bit real (REAL*4 for oldtimer Fortran users like myself) have about 7 digits of precision, while 64-bit (doubles, double precision, REAL*8) get to about 16.

So if a quantity needs high precision (typically this occurs for angular quantities where arcseconds are important), use double.

--
------------------------------------------------------------------------
Lucio Chiappetti - INAF/IASF - via Bassini 15 - I-20133 Milano (Italy)
For more info : http://www.iasf-milano.inaf.it/~lucio/personal.html
------------------------------------------------------------------------
Do not like Firefox >=29 ?  Get Pale Moon !  http://www.palemoon.org

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to