Tag: 双精度

Float和Double值在c 中造成混淆

我正在运行这个程序。 但得到奇怪的结果。 int main() { float a=.8; if(a < .8) printf("a is small\n"); else printf("a is not small\n"); float b=.7; if(b < .7) printf("b is small\n"); else printf("b is not small\n"); return 0; } 它给了我输出 – 一个不小 b很小

如何使用fmod并避免精度问题

我将把这个问题归结为最简单的forms: 让我们以0.05的步长从[0 .. 5.0]迭代,并且每0.25个乘数打印出’X’。 for(double d=0.0; d<=5.0; d+=0.05) { if(fmod(d,0.25) is equal 0) print 'X'; } 这当然不起作用,因为d将是[0,0.05000000001,0.100000000002,…]导致fmod()失败。 极端的例子是当d=1.999999999998和fmod(d,0.25) = 1 。 如何解决这个问题? 这是一个可编辑的在线示例。

在C中以更高的精度存储数字

我正在编写一个程序,其中我需要以非常高的精度(大约10^-10 )存储数字,然后进一步使用它们参数( create_bloomfilter ([yet to decide the type] falsePositivity, long expected_num_of_elem) )。 我能得到的最高精度是double (大约10^-6 )这是不够的。 我们如何在c中存储更高精度的数字?

了解C中的双精度运算

我想了解为什么这段代码: double r,d,rc; scanf(“%lf %lf”, &r, &d); rc = (r * r) – (d/2) * (d/2); printf(“%.2f\n”, M_PI * rc); 返回比这个更精确的结果(没有rc变量赋值): double r,d,rc; scanf(“%lf %lf”, &r, &d); printf(“%.2f\n”, M_PI * (r * r) – (d/2) * (d/2)); 另一个相关的问题:为什么n * n比pow(n,2)更好?

C ++:0和0.0之间的差异?

我很清楚0和0.0 (int和double)之间的区别。 但是0.和0.0之间有什么区别(请注意。)? 非常感谢提前, 阿克塞尔

从给定的符号,尾数和指数构造浮点(double)的宏或函数?

是否有任何宏或函数从给定的符号,尾数和指数(所有二进制或十进制)构造一个float(double),它返回一个有效的float(double)数字,如果输入指定的数字不能表示,则返回NaN漂浮(双)?

如何检查是否使用了IEEE 754单精度(32位)浮点表示?

我想在目标板上测试以下内容: 使用IEEE 754单精度(32位)浮点变量实现’float’吗? 使用IEEE 754双精度(64位)浮点变量实现“双重”吗? 有什么方法可以用简单的C程序测试它。