Re: bug on bc math?

From: Date: Mon, 30 Jul 2012 14:11:41 +0000
Subject: Re: bug on bc math?
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-61876@lists.php.net to get a copy of this message
On Mon, Jul 30, 2012 at 9:52 PM, Laruence <laruence@php.net> wrote: > Hi: > > I'd like mark this as a doc problem, see the comment of the bcmatch lib: > > /* The multiply routine. N2 times N1 is put int PROD with the scale of > the result being MIN(N2 scale+N1 scale, MAX (SCALE, N2 scale, N1 scale)). > */ > void bc_multiply (bc_num n1, bc_num n2, bc_num *prod, int scale TSRMLS_DC) > > and > > * Here is the full add routine that takes care of negative numbers. > N1 is added to N2 and the result placed into RESULT. SCALE_MIN > is the minimum scale for the result. */ > > void bc_add (n1, n2, result, scale_min) > > thanks Hi: but on the hand, we may also consider this as a bug, behavior not act like the doc said :) any IMO, fixing this, we should add some logic in PHP side, like before returning value to user . the code will look like(for bc_multiply): if (result->n_scale < scale ) { result->n_value = erealloc($result->n_value, scale); memset(result->n_result + result->n_scale, '0', scale - result->n_scale); result->n_scale = scale; } this will be a little ugly, since it alter the bc_num struct which should only inside bc lib, what do you think? thanks > > On Mon, Jul 30, 2012 at 8:47 PM, Devis Lucato <devis@lucato.it> wrote: >> Hi, >> >> before raising a bug I was wondering if anyone noticed this odd behavior in >> BC math functions ? >> >> Actual >> >> php -r "echo bcmul('1.1', '9.0', 5);" ==> 9.90 >> php -r "bcscale(5); echo bcmul('1.1', '9.0');" ==> 9.90 >> php -r "bcscale(5); echo bcadd('8.9', '1.0');" ==> 9.90000 >> >> >> Expected >> >> php -r "echo bcmul('1.1', '9.0', 5);" ==> 9.90000 >> php -r "bcscale(5); echo bcmul('1.1', '9.0');" ==> 9.90000 >> php -r "bcscale(5); echo bcadd('8.9', '1.0');" ==> 9.90000 >> >> >> Seen on 5.3 and 5.4. >> >> Looking at >> >> http://git.php.net/?p=php-src.git;a=history;f=ext/bcmath/bcmath.c;h=5dfafa8bd8dbc1703af2ea4452ac2b05b765a619;hb=HEADI >> couldn't see any recent change related to this bug. >> >> Thank you > > > > -- > Laruence Xinchen Hui > http://www.laruence.com/ -- Laruence Xinchen Hui http://www.laruence.com/

« previous php.internals (#61876) next »