当前位置:嗨网首页>书籍在线阅读

17-浮点数的优缺点

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.3.4 浮点数的优缺点

与整数相比,浮点数有两大优点。首先,它们可以表示整数之间的值。其次,由于有缩放因子,它们可以表示的范围大得多。最后,浮点运算的速度通常比整数运算慢,且精度将降低。程序清单3.9说明了最后一点。

程序清单3.9 fltadd.cpp

// fltadd.cpp -- precision problems with float
#include <iostream>
int main()
{
    using namespace std;
    float a = 2.34E+22f;
    float b = a + 1.0f;
    cout << "a = " << a << endl;
    cout << "b - a = " << b - a << endl;
    return 0;
}

注意: 有些基于ANSI C之前的编译器的老式C++实现不支持浮点常量后缀f。如果出现这样的问题,可以用2.34E+22代替2.34E+22f,用(float) 1.0代替1.0f。

该程序将数字加1,然后减去原来的数字。结果应该为1。下面是在某个系统上运行时该程序的输出:

a = 2.34e+022
b - a = 0

问题在于,2.34E+22是一个小数点右边有23位的数字。加上1,就是在第23位加1。但float类型只能表示数字中的前6位或前7位,因此修改第23位对这个值不会有任何影响。

将类型分类

C++对基本类型进行分类,形成了若干个族。类型signed char、short、int和long统称为符号整型;它们的无符号版本统称为无符号整型;C++11新增了long long。bool、char、wchar_t、符号整型和无符号整型统称为整型;C++11新增了char16_t和char32_t。float、double和long double统称为浮点型。整数和浮点型统称算术(arithmetic)类型。