将浮点数转换为C上的char数组

丹尼尔·门德斯

我正在尝试将浮点数转换为char数组。sprintf()不会为我工作,也不会dtostrf由于我的十进制数有限制(为5),因此我尝试了以下方法:

    int num = f;
    int decimales = (f-num)*10000;

一切正常,直到我键入了123.050。而不是给我小数部分为“ 0.50”,而是给了我5000,因为既然我的“小数”变量是,它就不算0 int

还有其他转换方式吗?

chqrlie

sprintf由于嵌入式系统上的空间限制,您需要一种快速且肮脏的方法来生成带有浮点数的小数表示形式的字符串而无需链接小数位数是固定的。这是一个建议:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *ftoa(char *dest, size_t size, double val, int dec) {
    char *p = dest;
    char *q = dest + size;
    long long mul = 1;
    long long num;
    int i;
    if (size == 0)
        return NULL;
    *--q = '\0';
    if (size == 1)
        goto fail;
    if (val < 0) {
        val = -val;
        if (p >= q)
            goto fail;
        *p++ = '-';
    }
    for (i = 0; i < dec; i++) {
        mul *= 10;
    }
    num = (long long)(val * mul + 0.5);
    for (i = 1; i < dec + 2 || num > 0; i++) {
        if (p >= q)
            goto fail;
        *--q = '0' + (num % 10);
        num = num / 10;
        if (i == dec) {
            if (p >= q)
                goto fail;
            *--q = '.';
        }
    }
    memmove(p, q, dest + size - q);
    return dest;
fail:
    return memset(dest, '*', size - 1);
}

int main(int argc, char *argv[]) {
    char buf[24];

    for (int i = 1; i < argc; i++) {
        double d = strtod(argv[i], NULL);
        int dec = 5;
        if (i + 1 < argc)
            dec = atoi(argv[++i]);
        printf("%s\n", ftoa(buf, sizeof buf, d, dec));
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符数组转换为浮点数?

来自分类Dev

将浮点数的函数参数转换为numpy数组

来自分类Dev

将浮点数转换为字节数组

来自分类Dev

将类转换为定长浮点数组

来自分类Dev

将 int 转换为数组中的浮点数

来自分类Dev

将.caf文件转换为标准化的浮点数组Objective-C / C

来自分类Dev

C将浮点数转换为int

来自分类Dev

使用BOOST将python浮点数转换为c ++

来自分类Dev

C函数将浮点数转换为字节数组

来自分类Dev

如何将 txt 文件转换为浮点数组(在 C# 中)?

来自分类Dev

将timedelta转换为浮点数

来自分类Dev

将数据转换为浮点数

来自分类Dev

将浮点数转换为整数

来自分类Dev

将分数转换为浮点数

来自分类Dev

将整数转换为浮点数

来自分类Dev

将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

来自分类Dev

将浮点数“> =”转换为“>”和“ <=”转换为“ <”

来自分类Dev

将16位无符号整数数组转换为32位浮点数组

来自分类Dev

将一维字符串数组转换为二维浮点数组

来自分类Dev

在Python 3中将字节数组转换为浮点数组

来自分类Dev

有效将浮点数组转换为字节数组

来自分类Dev

构建数组时如何防止Numpy数组将浮点数转换为int?

来自分类Dev

以科学计数法将浮点数组转换为字符串数组

来自分类Dev

ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

来自分类Dev

强制转换语法以将总和转换为浮点数

来自分类Dev

如何在C ++中将浮点数组转换为字节数组(Arduino)

来自分类Dev

如何在c#中将浮点数组转换为字节数组?

来自分类Dev

将浮点数的二维数组转换为布尔值

来自分类Dev

如何使用jQuery将字符串的多维数组转换为浮点数?

Related 相关文章

  1. 1

    将字符数组转换为浮点数?

  2. 2

    将浮点数的函数参数转换为numpy数组

  3. 3

    将浮点数转换为字节数组

  4. 4

    将类转换为定长浮点数组

  5. 5

    将 int 转换为数组中的浮点数

  6. 6

    将.caf文件转换为标准化的浮点数组Objective-C / C

  7. 7

    C将浮点数转换为int

  8. 8

    使用BOOST将python浮点数转换为c ++

  9. 9

    C函数将浮点数转换为字节数组

  10. 10

    如何将 txt 文件转换为浮点数组(在 C# 中)?

  11. 11

    将timedelta转换为浮点数

  12. 12

    将数据转换为浮点数

  13. 13

    将浮点数转换为整数

  14. 14

    将分数转换为浮点数

  15. 15

    将整数转换为浮点数

  16. 16

    将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

  17. 17

    将浮点数“> =”转换为“>”和“ <=”转换为“ <”

  18. 18

    将16位无符号整数数组转换为32位浮点数组

  19. 19

    将一维字符串数组转换为二维浮点数组

  20. 20

    在Python 3中将字节数组转换为浮点数组

  21. 21

    有效将浮点数组转换为字节数组

  22. 22

    构建数组时如何防止Numpy数组将浮点数转换为int?

  23. 23

    以科学计数法将浮点数组转换为字符串数组

  24. 24

    ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

  25. 25

    强制转换语法以将总和转换为浮点数

  26. 26

    如何在C ++中将浮点数组转换为字节数组(Arduino)

  27. 27

    如何在c#中将浮点数组转换为字节数组?

  28. 28

    将浮点数的二维数组转换为布尔值

  29. 29

    如何使用jQuery将字符串的多维数组转换为浮点数?

热门标签

归档