2016-09-13 48 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

相關問題