posts - 43,comments - 3,trackbacks - 0
#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;
}
posted on 2010-05-07 16:58 RUI 阅读(401) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理