我是C开发的新手。如何将I double
值转换为uint_8
类型数组。
double test=1234.642462
我想保存为
uint8_t data[] = {'1','2','3','4','.','6','4','2','4','6','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
转换为存储在char
,uint8_t
,int8_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