Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
cs_misc.c
Go to the documentation of this file.00001 #include "mrilib.h"
00002
00003 char * approximate_number_string( double val )
00004 {
00005 static char sval[128] ;
00006 double aval=fabs(val) , tval ;
00007 int lv , qv ;
00008
00009 if( aval == 0.0 ){ strcpy(sval,"Zero"); return; }
00010
00011 if( val < 0.0 ){ strcpy(sval,"-"); } else { sval[0] = '\0'; }
00012
00013 lv = (int) floor(log10(aval)/3.0) ;
00014 tval = pow(10.0,(double)(3*lv)) ;
00015 qv = (int) rint(aval/tval) ;
00016 sprintf( sval+strlen(sval) , "%d" , qv ) ;
00017
00018 switch( lv ){
00019
00020 case 0: break ;
00021
00022 case 1: strcat(sval+strlen(sval)," thousand") ; break ;
00023 case 2: strcat(sval+strlen(sval)," million" ) ; break ;
00024 case 3: strcat(sval+strlen(sval)," billion" ) ; break ;
00025 case 4: strcat(sval+strlen(sval)," trillion") ; break ;
00026 case 5: strcat(sval+strlen(sval)," quadrillion") ; break ;
00027 case 6: strcat(sval+strlen(sval)," quintillion") ; break ;
00028
00029 case -1: strcat(sval+strlen(sval)," thousand-ths") ; break ;
00030 case -2: strcat(sval+strlen(sval)," million-ths") ; break ;
00031 case -3: strcat(sval+strlen(sval)," billion-ths") ; break ;
00032 case -4: strcat(sval+strlen(sval)," trillion-ths") ; break ;
00033
00034 default:
00035 strcat(sval+strlen(sval)," jillion") ;
00036 if( lv < 0 ) strcat(sval+strlen(sval),"-ths") ;
00037 break ;
00038 }
00039
00040 return (char *)sval ;
00041 }