关于C++浮点数值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:13:18
#include<iostream>
using namespace std;
int main()
{
float a=0.1f;
float b=2.1f;
a -=0.09f;
b -=2.09f;
cout<<a-b<<endl;
return 0;
}

本来输出的应该是0
可结果却是一个数量级为-9的数
什么原因?
那怎么解决呢?

你用的是float类型的的数,只有6~7为有效数字,因此有这个误差是正常的,一般来数,计算机中的浮点数存储都有一定误差的

改为double可以有15~16个有效数字,但也不能保证是准确值。除了int类型的数,其他数字都不可能完全准确存储

因为计算机里保存小数可能不是准确值