ID: 1029 Updated by: andy Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Feature/Change Request Operating System: Linux PHP Version: 4.0 New Comment: Should this request be closed? It's really old... 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]