⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftoa.c

📁 Rabbit 32Bit RTOS源代码
💻 C
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:ftoa.c
*描    述:浮点数转化成ascii码
*当前版本:V1.00
*作    者:李士伟
*创建日期:2012.01.15
**********************************************************************/
#include <lib\ftoa.h>

/*********************************************************************
*函 数 名:ftoa
*描    述:浮点数转化成ascii码
*输入参数:f: 浮点数
*          precision: 小数精度
*输出参数:dst: 浮点数字符串
*返 回 值:转化ascii码使用字节数(包含'\0')
*注    意:
**********************************************************************/
unsigned int ftoa(double f, int precision, char *dst)
{
    unsigned long m,n;
    int flag = 0;
    char buf[40];
    char *p = buf + 40;

    *--p = '\0';

    if (f < 0)
    {
        f = -f;
        flag = 1;
    }

    m = (unsigned long)f;
    f = f - m;

    switch (precision)
    {
        case 1:
        {
            n = f * 10;
            break;
        }
        case 2:
        {
            n = f * 100;
            break;
        }
        case 3:
        {
            n = f * 1000;
            break;
        }
        case 4:
        {
            n = f * 10000;
            break;
        }
        case 5:
        {
            n = f * 100000;
            break;
        }
        case 6:
        {
            n = f * 1000000;
            break;
        }
        case 7:
        {
            n = f * 10000000;
            break;
        }
        case 8:
        {
            n = f * 100000000;
            break;
        }
        default:
        {
            n = f * 1000000;
            break;
        }
    }

    do
    {
        *--p = '0' + n % 10;
        n = n / 10;
    }
    while (--precision);

    *--p = '.';

    do
    {
        *--p = '0' + m % 10;
        m = m / 10;
    }
    while (m);

    n = buf + 40 - p + flag;

    if (flag)
    {
        *dst++ = '-';
    }

    do
    {
        *dst++ = *p;
    }
    while (*p++ != '\0');

    return n;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -