c - 如何修复 C 函数给出错误的总和值
问题描述
我做了一个简单的加法函数,但是得到了错误的总和值,抱歉,如果它是一件天真的事情。但真的很想知道为什么会这样。我想要一个替代解决方案。提前致谢!
我正在使用notepad++编写代码,并在windows命令提示符下使用gcc编译器来执行代码。
#include <stdlib.h>
#include <stdio.h>
float addit(float num1, float num2)
{
float sumit;
sumit = num1 + num2;
return sumit;
}
int main()
{
float num1, num2;
float answer = 0.000000;
printf("Enter first number: ");
scanf("%f", &num1);
printf("Enter second number: ");
scanf("%f", &num2);
answer = addit(num1, num2);
printf("The summation is: %f", answer);
return 0;
}
2345.34 和 432.666 相加的预期输出为 2778.006。但是,执行后它显示 2778.006104。
解决方案
欢迎来到浮点值的美妙世界!考虑一下:在 0 和 1 之间,有无数个数字。有 0.1,有 0.01,有 0.001,等等。但是计算机没有无限的空间,那么我们应该如何存储数字呢?我们的解决方案是限制我们存储的数字的精度。正如其他人所提到的,java 的浮点数据类型只有 6 或 7 位精度(以 10 为基数)。因此,您不一定能保证对浮点数进行数学运算的结果是 100% 准确的。您只能确定结果的前 6-7 位数字。
推荐阅读
- node.js - Datadog:跟踪范围返回 null
- r - R; 以闪亮的方式显示 gganimate .mp4 文件
- python - Q:ERROR: Command errored out with exit status 1:
- reactjs - React 新手,我正在尝试链接 2 个页面,它不会呈现,但路径会显示在浏览器中
- javascript - 如何在 Javascript 中读取窗口对象的控制台?
- core-data - SwiftUI PreviewProvider 使用 CoreData 显示特定的 NSManagedObject 条目
- jquery - 模态打开jQuery时标记复选框
- twilio - Studio 流程 -> 发送消息 -> 功能(电子邮件)
- elsa-workflows - Elsa Workflow - 运行时的审批者
- git - Git Checkout Vs Git Checkout -B 与上游仓库