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]

Reply via email to