如何在C
語言中將float
值轉換爲char*
?將float轉換爲char *
回答
char buffer[64];
int ret = snprintf(buffer, sizeof buffer, "%f", myFloat);
if (ret < 0) {
return EXIT_FAILURE;
}
if (ret > sizeof buffer) {
/* Result was truncated - resize the buffer and retry.
}
這將的myFloat
字符串表示存儲在myCharPointer
。確保字符串足夠大以容納它。
snprintf
比sprintf
一個更好的選擇,因爲它保證它永遠不會寫了緩衝區的你的說法提供了大小2
使用snprintf,以確保沒有緩衝區溢出。 – JeremyP 2010-06-07 11:07:01
好主意!我會添加到我的答案... – 2010-06-07 11:09:44
char* str=NULL;
int len = asprintf(&str, "%g", float_var);
if (len == -1)
fprintf(stderr, "Error converting float: %m\n");
else
printf("float is %s\n", str);
free(str);
+1,即使它必須指定它是一個GNU擴展afaik。(asprintf是我的意思是GNU分機) – ShinTakezou 2010-06-07 10:55:06
char array[10];
snprintf(array, sizeof(array), "%f", 3.333333);
在Arduino的:
//temporarily holds data from vals
char charVal[10];
//4 is mininum width, 3 is precision; float value is copied onto buff
dtostrf(123.234, 4, 3, charVal);
monitor.print("charVal: ");
monitor.println(charVal);
在接受答案後很久。
使用sprintf()
或相關函數,因爲許多其他人有建議的答案,但使用更好的格式說明符。
使用"%.*e"
,代碼解決了各種問題:
所需的最大緩衝區大小是更爲合理,喜歡18
sprintf(buf, "%f", FLT_MAX);
可能需要47+。sprintf(buf, "%f", DBL_MAX);
可能需要317+使用
".*"
允許代碼來定義區分的float x
字符串版本所需的小數位的數量和其下一個最高float
。對於deatils,見Printf width specifier to maintain precision of floating-point value"%e"
使用允許代碼彼此區分小float
做得相當不是所有的打印"0.000000"
其結果|x| < 0.0000005
時。#define FLT_STRING_SIZE (1+1+1+(FLT_DECIMAL_DIG-1)+1+1+ 4 +1) // - d . dddddddd e - dddd \0 char buf[FLT_STRING_SIZE]; sprintf(buf, "%.*e", FLT_DECIMAL_DIG-1, some_float);
思路:
IMO,最好使用2倍緩衝區大小便箋像buf[FLT_STRING_SIZE*2]
。
爲了增強健壯性,請使用snprint()
。
typedef union{
float a;
char b[4];
} my_union_t;
您可以逐字節地訪問浮點數據值,並通過8位輸出緩衝區(例如USART)發送數據,而無需強制轉換。
Upd:不要忘記處理器的排序! – Peter 2016-08-07 11:35:29
- 1. 如何將char *轉換爲float xcode
- 2. 將char *轉換爲float或double
- 3. 如何將Char轉換爲Float
- 4. 將char *轉換爲char? C++
- 5. Sybase將float從float轉換爲varchar
- 6. Java將Arraylist <Float>轉換爲float []
- 7. 將NSData轉換爲Java float?
- 8. mysql將float轉換爲double
- 9. 將int轉換爲float?
- 10. 將Mat轉換爲** float
- 11. 將float []轉換爲android.graphics.Matrix
- 12. 將float轉換爲int
- 13. Haskell將Float轉換爲Int
- 14. 將FLOAT轉換爲INT
- 15. 將double轉換爲float?
- 16. 將Float轉換爲Int
- 17. JSON將float轉換爲int
- 18. 將int轉換爲float/double
- 19. 將float(YYYY)轉換爲datetime
- 20. 將double [] []轉換爲float [] []
- 21. *將char轉換爲main並將* char轉換爲struct
- 22. 在初始化時,Arduino無法將'float'轉換爲'const char *'
- 23. 如何將float轉換爲C中的4字節char?
- 24. 將float 32精確地轉換爲unsigned short或unsigned char
- 25. 轉換爲float
- 26. 如何連接char數組元素並將其轉換/轉換爲float?
- 27. char *轉換爲char *
- 28. 從int,float,char,double的類型轉換
- 29. 將NSString *轉換爲char?
- 30. 將char轉換爲字節
你需要更具體。你想要什麼 - 浮點數的文本表示形式?您可以輕鬆地傳遞字節流,並稍後用於重新構建浮點數? – crazyscot 2010-06-07 10:46:55