C math.h 错误结果

标签 c sqrt math.h

我很难理解为什么以下代码片段计算信息错误:

result = sqrt(5/8 + sqrt(5)/8);
printf("Result is %1.15Lf\n", result);

我尝试先分离并计算一个部分,然后再计算另一个部分,但仍然遇到相同的问题。

它给了我:

Result is 0.528685631720282

当我使用 WolframAlpha 检查结果时,结果约为 0.9510565。

最佳答案

运行此代码您将得到正确的结果:

long double result = sqrt(5.0/8.0 + sqrt(5.0)/8.0);
printf("Result is %1.15Lf\n", result);

函数中的所有数字都是整数,我不知道程序中结果的数据类型,但它也应该与您期望结果的类型相同。

正如您提到的,您刚刚开始学习 C。请阅读有关数据类型在除法、乘法等中的重要性的信息。

关于C math.h 错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145626/

相关文章:

c - 编译期间 C 中 pow() 的异常行为

c - 将 float 结果保存到第三位,C 中不四舍五入

c++ - 来自 math.h 的 pow 错误

c - 如何链接两个目标文件

c - 初始化元素不是常量

c - 使用 ipcrm 删除共享内存 linux

python - 我应该如何使用 GEKKO 为 log 或 sqrt 建模?约束条件

c - 从c程序在linux中设置时间

delphi - Delphi 和 Free Pascal 中的 SQRT 函数的准确度如何?

c - C中int类型的sqrt()