首先,让我们先来看一段代码:
#include <iostream>
#include <iomanip>
int main()
{
using namespace std;
cout<<setprecision(17);
float num1 = 1.1;
double num2 = 1.1;
if (num1 == num2)
cout << "yes"<<endl;
else
cout << "no"<<endl;
cout<<num1<<";"<<num2<<endl;
return 0;
}
代码很简单,比较下num1和num2是否相等,那么是否相等呢?看字面值是一样的,理论上确实应该相等,但实际上却不是。为什么?这里涉及到了一个浮点型数据的精度和表示问题。
好,我们就来谈谈这两个问题。
1. 精度(Precision)

本文探讨了C++中浮点型变量(float, double)在比较时出现的问题,主要围绕精度和进位两方面进行阐述。通过分析,指出即使字面值相同的浮点数在内存中可能因精度缺失和进位错误导致不相等。提出了解决此类问题的两种方法:设定可接受误差值和高精度类型降精度比较。"
114196872,10540548,Java Kafka API 深入解析:同步、异步与及时消息发送,"['Java', 'Kafka', 'API', '消息队列', '数据传输']
最低0.47元/天 解锁文章
872

被折叠的 条评论
为什么被折叠?



