float数据精度
参考资料:《深入理解计算机系统(第三版)》
在参考资料的第二章里,详细讲解了整数的存储与计算,和浮点数的储存。具体见参考资料,本文档主要解释如下程序:
float a = 0.0, b = -0.0;
float d = 1e-259;
double c = 1e-259;
float result = 2.4;
if (4.8 / 2 == result) {
std::cout << "4.8/2 == 2.4\n";
} else {
std::cout << "4.8/2 !=2.4\n";
}
if (a == b) {
std::cout << "a == b\n";
} else {
std::cout << "a != b\n";
}
if (c == d) {
std::cout << "c ==d\n";
} else {
std::cout << "c !=d\n";
}
其运行结果为
4.8/2 !=2.4
a == b
c !=d
我们首先验证一些基础知识,最后再解释这个例子
PS:本文档的测试程序使用的库函数如下:
#include <float.h>
#include <math.h>
#include <bitset>
#include <iomanip>
#include <iostream>
我们首先验证"==",运行以下测试代码:
cout << setiosflags(ios::left) <&