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