我是C开发新手。如何将I double
的值转换为uint_8
类型的数组。将double值转换为uint_8类型数组
double test=1234.642462
我要救,因为它为
uint8_t data[] = {'1','2','3','4','.','6','4','2','4','6','2'};
任何帮助表示赞赏。谢谢。
我是C开发新手。如何将I double
的值转换为uint_8
类型的数组。将double值转换为uint_8类型数组
double test=1234.642462
我要救,因为它为
uint8_t data[] = {'1','2','3','4','.','6','4','2','4','6','2'};
任何帮助表示赞赏。谢谢。
可以使用snprintf
功能是这样的:
#include <stdlib.h>
int8_t data[20];
double test=1234.642462;
snprintf(data, 20, "%f", test);
的20个字符的限制应调整到所需的精度,因为浮点数可以很长。
通常约为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
使用'snprintf'。 –
将其转换为字符串,然后将字符串转换为'uint8_t'。 – Lundin
'sprintf(data,“%f”,test);' – LPs