繁体   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