Doxygen Source Code Documentation
cs_misc.c File Reference
#include "mrilib.h"
Go to the source code of this file.
Functions | |
char * | approximate_number_string (double val) |
Function Documentation
|
Definition at line 3 of file cs_misc.c.
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 } |