@@ -291,36 +291,12 @@ static void decimal_result(sqlite3_context *pCtx, Decimal *p){
291291 sqlite3_result_text (pCtx , z , i , sqlite3_free );
292292}
293293
294- /*
295- ** Round a decimal value to N significant digits. N must be positive.
296- */
297- static void decimal_round (Decimal * p , int N ){
298- int i ;
299- int nZero ;
300- if ( N < 1 ) return ;
301- for (nZero = 0 ; nZero < p -> nDigit && p -> a [nZero ]== 0 ; nZero ++ ){}
302- N += nZero ;
303- if ( p -> nDigit <=N ) return ;
304- if ( p -> a [N ]> 4 ){
305- p -> a [N - 1 ]++ ;
306- for (i = N - 1 ; i > 0 && p -> a [i ]> 9 ; i -- ){
307- p -> a [i ] = 0 ;
308- p -> a [i - 1 ]++ ;
309- }
310- if ( p -> a [0 ]> 9 ){
311- p -> a [0 ] = 1 ;
312- p -> nFrac -- ;
313- }
314- }
315- memset (& p -> a [N ], 0 , p -> nDigit - N );
316- }
317-
318294/*
319295** Make the given Decimal the result in an format similar to '%+#e'.
320296** In other words, show exponential notation with leading and trailing
321297** zeros omitted.
322298*/
323- static void decimal_result_sci (sqlite3_context * pCtx , Decimal * p , int N ){
299+ static void decimal_result_sci (sqlite3_context * pCtx , Decimal * p ){
324300 char * z ; /* The output buffer */
325301 int i ; /* Loop counter */
326302 int nZero ; /* Number of leading zeros */
@@ -338,8 +314,7 @@ static void decimal_result_sci(sqlite3_context *pCtx, Decimal *p, int N){
338314 sqlite3_result_null (pCtx );
339315 return ;
340316 }
341- if ( N < 1 ) N = 0 ;
342- for (nDigit = p -> nDigit ; nDigit > N && p -> a [nDigit - 1 ]== 0 ; nDigit -- ){}
317+ for (nDigit = p -> nDigit ; nDigit > 0 && p -> a [nDigit - 1 ]== 0 ; nDigit -- ){}
343318 for (nZero = 0 ; nZero < nDigit && p -> a [nZero ]== 0 ; nZero ++ ){}
344319 nFrac = p -> nFrac + (nDigit - p -> nDigit );
345320 nDigit -= nZero ;
@@ -702,16 +677,10 @@ static void decimalFunc(
702677 sqlite3_value * * argv
703678){
704679 Decimal * p = decimal_new (context , argv [0 ], 0 );
705- int N ;
706- if ( argc == 2 ){
707- N = sqlite3_value_int (argv [1 ]);
708- if ( N > 0 ) decimal_round (p , N );
709- }else {
710- N = 0 ;
711- }
680+ UNUSED_PARAMETER (argc );
712681 if ( p ){
713682 if ( sqlite3_user_data (context )!= 0 ){
714- decimal_result_sci (context , p , N );
683+ decimal_result_sci (context , p );
715684 }else {
716685 decimal_result (context , p );
717686 }
@@ -881,7 +850,7 @@ static void decimalPow2Func(
881850 UNUSED_PARAMETER (argc );
882851 if ( sqlite3_value_type (argv [0 ])== SQLITE_INTEGER ){
883852 Decimal * pA = decimalPow2 (sqlite3_value_int (argv [0 ]));
884- decimal_result_sci (context , pA , 0 );
853+ decimal_result_sci (context , pA );
885854 decimal_free (pA );
886855 }
887856}
@@ -902,9 +871,7 @@ int sqlite3_decimal_init(
902871 void (* xFunc )(sqlite3_context * ,int ,sqlite3_value * * );
903872 } aFunc [] = {
904873 { "decimal" , 1 , 0 , decimalFunc },
905- { "decimal" , 2 , 0 , decimalFunc },
906874 { "decimal_exp" , 1 , 1 , decimalFunc },
907- { "decimal_exp" , 2 , 1 , decimalFunc },
908875 { "decimal_cmp" , 2 , 0 , decimalCmpFunc },
909876 { "decimal_add" , 2 , 0 , decimalAddFunc },
910877 { "decimal_sub" , 2 , 0 , decimalSubFunc },
0 commit comments