#1029 [Com]: printf (& sprintf) dosn't handle exponential format for floats correctly
| From: | story-sex42 at hotmail dot com | Date: | Tue, 20 Jul 2004 15:00:39 +0000 |
| Subject: | #1029 [Com]: printf (& sprintf) dosn't handle exponential format for floats correctly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-62784@lists.php.net to get a copy of this message | ||
ID: 1029
Comment by: story-sex42 at hotmail dot com
Reported By: leif dot thuresson at tsl dot uu dot se
Status: Closed
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 4.0
New Comment:
<a href=http://a4-young-teens-fist.da.ru>story
sex</a>
Previous Comments:
------------------------------------------------------------------------
[2002-06-15 09:20:52] derick@php.net
I've no clue what this is about... printf seems to work just fine here
with exponentional numbers.
Derick
------------------------------------------------------------------------
[2001-07-22 12:28:38] andy@php.net
Should this request be closed? It's really old...
------------------------------------------------------------------------
[2001-02-10 12:55:06] jimw@php.net
really reassigned to 4.0 this time.
------------------------------------------------------------------------
[1999-11-12 11:31:07] joey at cvs dot php dot net
Moving to feature req.
------------------------------------------------------------------------
[1999-01-05 06:29:54] leif dot thuresson at tsl dot uu dot se
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