File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < iostream> 
2+ #include < iomanip> 
3+ using  namespace  std ; 
4+ 
5+ template <unsigned  long  long  n>
6+ long  double  atoif (const  char  (&num)[n],bool space_flag=false){// i.e. converts string to float
7+ if  (n==-1 ||!n)
8+ return  0 ;
9+  short  sign=1 ,i=0 ; int  integer_part=0 ; bool  fraction_flag=false ;
10+ if  (num[i]==' -'  ){//  Take care of +/- sign
11+ ++i;
12+ sign=-1 ;
13+ }
14+ else  if (num[i]==' +'  )
15+ ++i;
16+ while (i<n-1 ){
17+ if (space_flag&&num[i]=='  '  )
18+ break ;
19+ if  (num[i]>=' 0'  &&num[i]<=' 9'  )
20+ integer_part=integer_part*10 +(num[i]-' 0'  );
21+ else  if (num[i]==' .'  ){
22+ fraction_flag=true ;
23+ i++;
24+ break ;
25+ }
26+ ++i;
27+ }
28+ long  double  fraction_part=0 ;
29+ if  (fraction_flag){
30+ long  double  exponent=0.1 ;
31+  while  (i<n-1 ){
32+ if  (num[i]<' 0'  ||num[i]>' 9'  )
33+ break ;
34+ fraction_part+=exponent*(num[i]-' 0'  );
35+ exponent*=0.1 ;
36+ ++i;
37+ }
38+ }
39+ return  sign*integer_part+fraction_part;
40+ }
41+ 
42+ int  main (){
43+ cout<<setprecision (12 )<<atoif (" 51224.765432"  );
44+ return  0 ;
45+ }
                                 You can’t perform that action at this time. 
               
                  
0 commit comments