我是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