2016-09-13 51 views
0

我是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'}; 

任何帮助表示赞赏。谢谢。

+0

使用'snprintf'。 –

+3

将其转换为字符串,然后将字符串转换为'uint8_t'。 – Lundin

+0

'sprintf(data,“%f”,test);' – LPs

回答

1

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

#include <stdlib.h>  

int8_t data[20]; 
double test=1234.642462; 

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

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

0

​​通常约为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

相关问题