Krzysztof Nakielski <[EMAIL PROTECTED]> wrote: > On Wed, Apr 12, 2006 at 09:37:01AM -0400, Bill Moran wrote: > > On Wed, 12 Apr 2006 12:09:17 +0200 > > Krzysztof Nakielski <[EMAIL PROTECTED]> wrote: > > > > > Hi, > > > > > > I am having problem with round() function in php, python, mysql. I am > > > not sure if thats FreeBSD issue. I receive the same results on 4.11, 5.4 > > > and 6.0. > > > > > > php (4.4.1, 5.1.2): > > > %php -r 'print round(8.075, 2) ."\n";' > > > 8.07 > > > > Have you compared these results to other POSIX systems? > > On RHEL 3 only PHP returns good result. In python and mysql there is the > same issue. > > > The problem is in the way that real numbers are implemented. If you > > do some searches, you'll find many, many discussions of this. Simple > > fact is that the behaviour under these circumstances is not what > > you think it is. This kind of thing is the reason that most languages > > have high-precision floating point libraries available. > > > > I will search for this. But first thing is to give up with python, php, > mysql in billing software or write own functions otherwise you can lose > money.
That's not a good solution. Real numbers are not designed to be accurate in the way that you define accurate. If you want your application to behave in a manner that you understand, then you need to understand how those numbers are handled by the language. A few things to research: http://fixedpoint.sourceforge.net/ http://dev.mysql.com/doc/refman/5.0/en/precision-math.html http://us2.php.net/manual/en/ref.bc.php http://en.wikipedia.org/wiki/Fixed-point_arithmetic -- Bill Moran _______________________________________________ email@example.com mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"