[英]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.