Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80556
  • 博文数量: 27
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-21 11:32
文章分类

全部博文(27)

文章存档

2010年(3)

2009年(13)

2008年(11)

我的朋友

分类: C/C++

2010-04-10 21:19:38

   
    BOOL SetFloatDecimal(float input, int dec, float &out)
    {
        out = 0.0;
        if (0 != _isnan(input)
            || dec < 0
            || dec > 15)
            return FALSE;
        
#define BUFFERSIZE 100
        char buffer[BUFFERSIZE] = {0};
        const char point[] = ".";
       
        int size = sprintf(buffer, "%.20f", input);
        int index = strcspn(buffer, point);
        if (0 >= index)
        {
            out = input;
            return TRUE;
        }
        if ((BUFFERSIZE - 1) < index)
            return FALSE;
       
        BOOL bAdd = FALSE;
        index = index + dec + 1;
        if ('5' < buffer[index])
        {
            bAdd = TRUE;
        }
        else if ('5' == buffer[index])
        {
            bAdd = (0 != buffer[index - 1] % 2);
        }
       
        buffer[index] = '\0';
        sscanf(buffer, "%f", &out);
        if (bAdd)
            out += 1 / pow(10, dec);
       
        return (0 == _isnan(out));
    }
阅读(672) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-04-27 14:25:43

楼主好,你的atl wtl com activeX咋学的?