#include <stdio.h>
#include <math.h>
char toNotationUnit( double value, float * out) {
double val;
char submultiplo[ ] = { ' ' , 'm' , 'u' , 'n' , 'p' , 'f' , 'a' , 'z' , 'y' } ;
char multiplo[ ] = { ' ' , 'k' , 'M' , 'G' , 'T' , 'P' , 'E' , 'Z' , 'Y' } ;
int counter;
char unit;
val = value;
if ( val < 1 ) {
while ( val < 1.00 ) {
counter++;
val= val* ( double ) 1000 ;
if ( counter== 8 ) break ;
unit = submultiplo[ counter] ;
}
} else {
while ( val >= 1000 ) {
counter++;
val= val/ ( double ) 1000 ;
if ( counter== 8 ) break ;
}
unit = multiplo[ counter] ;
}
val = round( val* ( double ) 100 ) / ( double ) 100 ;
* out = ( float ) val;
return unit;
}
int main( ) {
double x = 0.000000123123 ;
float res;
char t;
t = toNotationUnit( x,& res) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CmNoYXIgdG9Ob3RhdGlvblVuaXQoZG91YmxlIHZhbHVlLGZsb2F0ICpvdXQpIHsKICAgIGRvdWJsZSB2YWw7CgljaGFyIHN1Ym11bHRpcGxvW10gPSB7JyAnLCdtJywndScsJ24nLCdwJywnZicsJ2EnLCd6JywneSd9OwoJY2hhciBtdWx0aXBsb1tdID0geycgJywnaycsJ00nLCdHJywnVCcsJ1AnLCdFJywnWicsJ1knfTsKCWludCBjb3VudGVyOwoJY2hhciB1bml0OwoJdmFsID0gdmFsdWU7CglpZih2YWwgPCAxKSB7CgkJd2hpbGUodmFsIDwgMS4wMCkgewoJCQljb3VudGVyKys7CgkJCXZhbD12YWwqKGRvdWJsZSkxMDAwOwoJCQlpZihjb3VudGVyPT04KSBicmVhazsKCQkJdW5pdCA9IHN1Ym11bHRpcGxvW2NvdW50ZXJdOwoJCX0KCX1lbHNlewoJCXdoaWxlKHZhbCA+PSAxMDAwKSB7CgkJCWNvdW50ZXIrKzsKCQkJdmFsPXZhbC8oZG91YmxlKTEwMDA7CgkJCWlmKGNvdW50ZXI9PTgpIGJyZWFrOwoJCX0KCQl1bml0ID0gbXVsdGlwbG9bY291bnRlcl07Cgl9Cgl2YWwgPSByb3VuZCh2YWwqKGRvdWJsZSkxMDApLyhkb3VibGUpMTAwOwoJKm91dCA9IChmbG9hdCl2YWw7CglyZXR1cm4gdW5pdDsKfQoKaW50IG1haW4oKSB7CiAgZG91YmxlIHggPSAwLjAwMDAwMDEyMzEyMzsKICBmbG9hdCByZXM7CiAgY2hhciB0OwogIHQgPSB0b05vdGF0aW9uVW5pdCh4LCZyZXMpOwogIHByaW50ZigiJS4yRiVjIixyZXMsdCk7CiAgcmV0dXJuIDA7Cn0=
compilation info
prog.c: In function ‘toNotationUnit’:
prog.c:25: warning: implicit declaration of function ‘round’
prog.c:25: warning: incompatible implicit declaration of built-in function ‘round’
prog.c:3: warning: ‘counter’ may be used uninitialized in this function
prog.c:8: warning: ‘unit’ may be used uninitialized in this function
stdout