ID: 1029
Updated by: derick
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Assigned
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 4.0
Old Assigned To:
Assigned To: derick
Previous Comments:
------------------------------------------------------------------------
[2001-02-10 12:55:06] [EMAIL PROTECTED]
really reassigned to 4.0 this time.
------------------------------------------------------------------------
[1999-11-12 11:31:07] [EMAIL PROTECTED]
Moving to feature req.
------------------------------------------------------------------------
[1999-01-05 06:29:54] [EMAIL PROTECTED]
System: Linux, Apache with PHP-module
Problem: printf (& sprintf) dosn't handle exponential format for floats correctly
Comment: This isn't actually a bug since it isn't documented to work in the manual.
I nedded exponential format in my application and since the function
"formatted_print.c" already had some support for exp. format (but
not working correctly) the simplest solution was to fix it in the php
source code.
Below is my patch to "formatted_print.c" if you would like to include
it
in a future rease of PHP.
Thanks for a great tool for building web interfaces to databases !
Regards,
-leif
*** formatted_print.c.org Mon Jan 4 21:06:38 1999
--- formatted_print.c Mon Jan 4 21:13:09 1999
***************
*** 257,263 ****
} else if (precision > MAX_FLOAT_PRECISION) {
precision = MAX_FLOAT_PRECISION;
}
! cvt = _php3_cvt(number, precision, &decpt, &sign, (fmt == 'e'));
if (sign) {
numbuf[i++] = '-';
--- 257,266 ----
} else if (precision > MAX_FLOAT_PRECISION) {
precision = MAX_FLOAT_PRECISION;
}
! if (fmt == 'e')
! cvt = _php3_cvt(number, precision+1, &decpt, &sign, 1);
! else
! cvt = _php3_cvt(number, precision, &decpt, &sign, 0);
if (sign) {
numbuf[i++] = '-';
***************
*** 288,294 ****
while (cvt[j]) {
numbuf[i++] = cvt[j++];
}
!
numbuf[i] = '\0';
if (precision > 0) {
--- 291,311 ----
while (cvt[j]) {
numbuf[i++] = cvt[j++];
}
! if (fmt == 'e') {
! int exponent = decpt-1;
! numbuf[i++] = 'e';
! if (exponent < 0)
! numbuf[i++] = '-';
! else
! numbuf[i++] = '+';
! exponent = abs(exponent);
! if (exponent > 99) {
! numbuf[i++] = '0' + exponent / 100;
! exponent = exponent % 100;
! }
! numbuf[i++] = '0' + exponent / 10;
! numbuf[i++] = '0' + exponent % 10;
! }
numbuf[i] = '\0';
if (precision > 0) {
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=1029&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]