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] [EMAIL PROTECTED] 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] [EMAIL PROTECTED] Should this request be closed? It's really old... ------------------------------------------------------------------------ [2001-02-10 12:55:06] [EMAIL PROTECTED] 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
