c - 有时 float 比 double 好吗?

标签 c floating-point-precision double-precision

我在 spoj http://www.spoj.com/problems/ATOMS/ 上解决了这个问题.我不得不将 log(m/n)/log(k) 的组成部分作为输出。我用了 m, n, k 一样长的时间。当我使用 long double 计算它时,我得到了一个错误的答案,但是当我使用 float 时,它被接受了。

printf("%lld\n", (long long)(log(m / (long double)n) / log(k)));

这是给出了一个错误的答案,但是:

printf("%lld\n", (long long)((float)log(m / (float)n) / (float)log(k)));

被录取了。那么在精度方面是否存在 float 优于 double 的情况?

最佳答案

float 永远不会double 更准确,因为根据 C 标准,前者必须是后者的子集:

6.2.5/6:“float 类型的值集是 double 类型值集的子集;double 类型值集是 double 类型值集的子集长双。”

请注意,尽管 IEEE754 特别常见,但该标准坚持特定的浮点表示。

关于c - 有时 float 比 double 好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30786784/

相关文章:

c - 如何在 PostgreSQL 中使用 [libpg] "COPY FROM STDIN"方法插入多条目数组?

c - C 中的二进制掩码和位操作

python - 在 Decimal 类 Python 中设置精度

c - 第 15 位数字后小数精度丢失 - PI 错误

c - C 中总和的最小和

c - 用C语言制作计算器

C++ Builder 是 StrToFloat() 与 .ToDouble() 相同

floating-point - 机器精度估计

matlab - 准确表示整数的 double 除法(当它们可整除时)

比较 2 个具有可接受错误的双数 - 始终显示 "not equal"