浮点数
对于金融、数学等行业对于数字的要求更高所以使用浮点数。
优势:浮点数可以表示包括小数在内的更大范围的数。
使用类型:float,double,long double
计数法:一般计数法、科学记数法、指数计数法(e后面的数字表示10的指数)
声明方式 (与整数类型相同)
ps:
①e或E都可以
②浮点数常量多种表示方式省略小数点(2E5)、省略指数部分(19.57)、省略小数部分(3.E16)、省略整数部分(.4E23)但是不可以同时省略两部分。
③浮点型常量之间不可以加空格
④一般情况下编译器默认浮点型常量是double类型的精度,可以在数据后加上后缀覆盖默认设置的double精度。加f或F编译器会看做float类型,加l或L编译器会看做long double类型。
⑤C99还添加了十六进制表示浮点数,但并非所有编译器适配,不多赘述。
打印浮点数
%f打印十进制的float和double类型浮点数,用%e打印指数型计数法的浮点数。
浮点值的上溢和下溢
上溢:当计算量超过当前类型所能表达的最大范围,就会发生上溢。现在会给其赋一个表示无穷大的特定值,所以printf()显示的值一般表示为inf或infinity(或者其他可以表示无穷含义的内容)。
下溢:对于一个十进制的有效数字(如,0.1234e-10)除以10,得到的结果是0.123e-10。虽然得到了结果但是计算过程中损失了末尾原有的有效数字,此情况成为下溢。下溢会造成精度损失,C语言把损失了类型全精度的浮点值称为低于正常的浮点值。
特殊的浮点值nan(not a number):例如给asin()函数传递一个值可以输出一个角度,但是正弦值不能大于1,如果输入一个大于1的值,则该函数的行为未定义返回值为nan。
浮点数舍入错误
该情况是由于计算机缺少足够的位数来进行运算。
参考文献C primer plus