将double值转换为uint_8类型数组

时间:2016-09-13 13:39:03

标签: c string floating-point

我是C开发的新手。如何将I double值转换为uint_8类型数组。

double test=1234.642462

我想保存为

uint8_t data[] = {'1','2','3','4','.','6','4','2','4','6','2'};

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用snprintf这样的功能:

#include <stdlib.h>    

int8_t data[20];
double test=1234.642462;

snprintf(data, 20, "%f", test);

应将20个字符的限制调整到所需的精度,因为浮点数可能很长。

答案 1 :(得分:0)

DBL_MAX通常约为179769...(303 more digits).0。通常只考虑前17个。

DBL_MIN通常约为0.000(303 more zeros)222507...而且通常只有前17个被认为是重要的。

double的整个范围转换为非指数十进制字符串,显示有效数字可能需要数百个字节 - 这不是一个实用的方法。

要将double转换为存储在charuint8_tint8_t等中的十进制文本表示,最好使用指数符号表示有足够但不是过多的有效数字。将*printf()系列与e一起使用。

#include <float.h>
//                     -   d   .       dddd                e   -  expo \0
#define DBL_TEXT_SIZE (1 + 1 + 1 + (DBL_DECIMAL_DIG - 1) + 1 + 1 + 6 + 1)
...
uint8_t data[DBL_TEXT_SIZE];
sprintf(data, "%.e", DBL_DECIMAL_DIG - 1, test);

有关详情:请参阅Printf width specifier to maintain precision of floating-point value