C++初学(4)

4.1、const限定符

如果程序在多个地方使用同一个常量,则需要修改该常量时,只需修改一个符号定义即可。前面介绍#define语句时说明过,C++有更好的处理符号常量的方法,就是使用const关键字来修改变量声明和初始化。假设需要一个表示一天中小时数的符号常量,在程序中输入下列代码:

const int Hours=24;

这样,便可以在程序中使用Hours,而不是24。常量被初始化后,其值就被固定了,编译器将不允许再修改该常量的值。

一种常见的做法时将名称的首字母大写,以提醒您Hours是个常量;或者将整个变量名称大写,#define经常使用;或者其他易阅读的方式。

注:如果之前学过C语言并打算使用#define来定义常量,应该使用const。它能明确指定类型,并且可以使用C++的作用域规则将定义限制在特定的函数会文件中(后面讨论)。

4.2、浮点数

浮点类型时C++的第二组基本类型,能够表示带小数部分的数字。如2.5,3.1415等等。浮点数能够表示小数值、非常大和非常小的值,它们内部表示方式与整数有天壤之别。

4.2.1、书写浮点数

C++有两种书写浮点数的方式。

第一种是标准小数点表示法:12.34、4.0、0.00666。即使小数部分为0,小数点也将确保该数字以浮点格式表示。

第二种是E表示法:例如:3.45E6,指的是3.45与1000000相乘的结果;E6指的是10的6次方,6被称为指数,3.45称为尾数。

E表示法确保数字以浮点格式存储,即使没有小数点。注:E可以不分大小写,指数可以整数可以负数,但数字之间不能用空格,例如:7.2 E6。

指数为负数意味着除以10的乘方,而不是乘以10的乘方。因此,8.33E-4表示8.33/10^4,即0.000833。

重点d.dddE+n指的是将小数点向右移n位,而d.dddE-n则是将小数点向左移n位。

4.2.2、浮点类型

C++有三种浮点类型:float、double和long double。这些类型是按照它们可以表示的有效数位和允许的指数最小范围来描述的。有效位是数字中有意义的位。如:51155使用了5个有效位,如果四舍五入写成51000时,有效位为2为,后面3个0为占位符。

C++对于有效位数的要求是:float至少32位,double至少48位且不少于float,long double至少和double一样多。

#include <iostream>
int main()
{
	using namespace std;
	cout.setf(ios_base::fixed, ios_base::floatfield);
	float tub = 10.0 / 3.0;
	double mint = 10.0 / 3.0;
	const float millon = 1.0e6;

	cout << "tub= " <<  tub;
	cout << ", a millon tubs= " << millon * tub;
	cout << ",\nand ten millon tubs= ";
	cout << 10 * millon * tub << endl;

	cout << "mint = " <<  mint << " and a millon mints= ";
	cout << millon*mint << endl;
	return 0;
}

注:该程序用了ostream方法setf(),这种调用迫使输出使用定点表示法,以便更好地了解精度,防止程序把较大的值切换为E表示法,并使程序显示到小数点后6位。参数ios_base::fixed和ios_base::floatfield是通过包含iostream来提供的常量。

程序说明:cout通常会删除结尾的零。例如,将333333.250000显示为333333.25.调用cout.setf()(如上所示)进行替换。由于cout打印6位小数,因此flooat的tub和double的mint都是准确的。当程序将每个数乘以一百万后,tub在第7个3之后就与正确的有了误差。

cout所属的ostream类有一个类成员函数,能够精确地控制输出的格式——字段款度、小数位数等等,反正敬请期待(包讲的)。

4.2.3、浮点常量

书写浮点常量时,如果希望常量时float类型,请使用f或F后缀。long double类型则使用L后缀。

4.2.4、浮点数的优缺点

浮点数有两大优点:

(1)可以表示整数之间的值。

(2)可以表示的范围大得多。

注:浮点运算的速度通常比整数运算慢,且精度将降低。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值