将给定的数转化为长度固定的字符串,注意负数和小数

将给定的数转化为长度固定的字符串,注意负数和小数
#include  " stdio.h "
#include 
" stdlib.h "


typedef __int64 int64;

template
< typename T >
void  tran( char  dest[],  int  len,  int  maxL, T src)
{
    
if (len + 1 > maxL)
        
return ;

    
int r = 0;
    
if (src < 0)
    
{
        dest[r
++= '-';
        src 
= -src;
    }

    
//src >=0;
    T diff = src - (int64)src;

    int64 iSrc 
= (int64)src;
    int64 mod 
= 1;
    
while (iSrc >= 10)
    
{
        iSrc 
/= 10;
        mod 
*= 10;
    }


     iSrc 
= (int64)src;

    
bool bDot = false;
    
while ( r < len)
    
{
        
char c = '0';
        c 
+= iSrc /mod % 10;
        dest[r
++= c;

        
if (mod == 1)
        
{
            
if (diff > 0
            
{
                
if (!bDot)
                
{
                    dest[r
++= '.';
                    bDot 
= !bDot;
                }

                diff 
*= 10;
                iSrc 
= (__int64)diff;
                diff 
-= iSrc;
            }

            
else
            
{
                
if (!bDot)
                
{
                    dest[r
++= '.';
                    bDot 
= !bDot;
                }


                iSrc 
= 0;
            }

        }

        
else
        
{
            mod 
/= 10;
        }

    }

    dest[r] 
= 0;
}


int  main()
{
    
double a = -0.54360;
    
char dest[1000];
    tran(dest, 
20999, a);
    printf(
"%s\n", dest);
    
return 0;
}

你可能感兴趣的:(将给定的数转化为长度固定的字符串,注意负数和小数)