本篇为基础浮点数用法学习记录

wchar_t

类型 大小 表示范围
char 4字节 -128~127
signed char 4字节 -128~127
unsiged char 4字节 0~255
wchar_t(整数类型、宽字符类型) 8字节

wcahr_t:可以拜师扩展字符集,iostream头文件的最新版提供了作用相似的工具——wcin和wcout,可用于处理wchar_t流,==可以通过加上前缀L来指示宽字符常量和宽字符串

1
2
wcahr_t bob = L'P';
wcout << L"tall";

C++11新增的类型char16_t和char32_t(两者均是无符号的)

char16_t 使用前缀u表示 char16_t ch1 =u’q’;
char32_t 使用前缀U表示 char32_t ch2 = U’\U000022B’;

原始(raw)字符串

使用前缀R来标识原值字符串

1
2
3
4
5
cout << R"(Jim "Kingt Tutt uses·"\n" inatead of endl)" <<'\n';
//也可以使用
cout << R"+*(此处输入原始字符串)+*" << endl;
//输出:
Jim "Kingt Tutt uses·"\n" inatead of endl

const

如果程序在多个地方使用同一个常量,则需要修改该常量时,只需修改一个符号定义即可(const)。

g++将指出程序试图给一个只读变量赋值。 关键字 const 叫做限定符,因为它限定了声明的含义。

1
2
3
//creat 'const'
//const type name = value;
const int Months = 12;

​ 即:在声明中对const进行初始化。

​ 一种常见的做法是将名称的首字母大写,以提醒您 Months是个常量。这决不是一种通用约定,但在阅读程序时有助于区分常量和变量。另一种约定是将整个名称大写,使用Wdefime 创建常量时通常使用这种约定。还有一种约定是以字母k打头,如kmonths。当然,还有其他约定。许多组织都有特殊的编码约定,要求其程序员遵守。

C++ 浮点数

计算机将(2.5、3.64564)这样的值分成两部分存储。一部分表示值,另一部分(缩放因子)用于对值进行放大或缩小。

浮点数的两种表示方法

    #### 1. 使用常用的标准小数点表示法(如3.1415926)

2. E表示法(如2.52e+8==252 000 000)

​ 需要注意的是:

1. 既可以使用E,也可以使用e
2. 指数可以是正数,也可以是负数
3. 数字中间不能有空格(7.2 E6是错误的)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
float f1 = 3834e-10;
float f2 = 3834/1e10,f3 = f1;
//输出f1
std::cout << "当前输出为f1:" << f1 << std::endl;
//输出f2
std::printf("当前输出为f2:%.10f\n",f2);
//输出f3
std::printf("当前输出为f3:%.10f\n", f3);

//int 隐式转换
float f4 = 10 / 3; //10和3 被默认为两个int型变量 赋值操作向下取整
std::printf("当前输出为f4:%.10f\n", f4); //f4=3.0
float f5 = 10.0 / 3.0;
std::printf("当前输出为f5:%.10f\n", f5); // 10.0/3 = 10/3.0 = 3.33

}

输出结果如下所示:

image-20200808150951505.png

浮点数优缺点

  • 优势
  1. 可以表示整数之间的值
  2. 由于有缩放因此,表示范围较大
  • 不足
    1. 浮点运算的速度比整数运算慢
    2. 精度降低(如下所示)
1
2
3
4
5
6
7
8
9
void main()
{
//该程序将f6加1,然后减去1
float f6 = 2.34E+22f;
float f7 = f6 + 1.0f;

std::cout << "f6:" << f6 << std::endl << "f7-f6:" << f7 - f6 << std::endl;
std::printf("当前输出为f6:%.1f\n当前输出为f7-f6:%.1f\n", f6, f7-f6);
}

输出结果如下:

复合类型