簡體   English   中英

C 和浮點

[英]C and Floating Point

我用 C 編寫了一個程序,我使用 cJSON 來封裝數據並發送到 Firebase。

我只是希望數字是一個數字,這樣我就可以在 Firebase 中對其進行一些計算。

這就是它變得混亂的地方。

double 24.9

這回饋

24.899999999999999

所以例如,

round((399 / 16.0) * 10.0) / 10.0 = 24.8999999

我只想要一位小數,我想要 24.9,我需要將它表示為一個數字。 看起來我可能只需要執行 sprintf() 並在 cJSON 中使用 RAW。 除非在 C 中有另一種方法可以將我的 24.9 保持為 24.9。

這個問題不是詢問浮點數是如何工作的。 我知道問題。 然而,我還沒有看到合適的方法來解決它。

C 浮點不能做到這一點。

您可以做的是表示以毫為單位的數字 - 就像這樣:

int 24900

當系統希望表達和通信浮點數時,您會驚訝於它是最可行的解決方案的頻率

dec24.9 是二進制的,正如 dec1/3 是十進制的:一個具有無限小數位數的數字。

克服這個困難的唯一方法(我知道 - 可能有實際的解決方案)是將數字放入字符串中,確實使用sprintf

char *num = malloc(); //Large enough to contain the result or else... SEGFAULT
sprintf(&num, "%.2f", YOUR_MATH_HERE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM