1,float 精度为七位有效数字,指第一位非零数字开始,往后数7位都是精确的,第八位是四舍五入的约数
2,小数转二进制
13.625
13 -> 1101
倒除法:
.625 -> .101
0.625 * 2 = 1.25 取整 1 ,剩下0.25
0.25 * 2 = 0.5 取整 0 , 剩下0.5
0.5 * 2 = 1 取整 1 ,剩下0
按顺序得到 101(直到小数部分为0)
13.625 => 1101.101
1101.101 小数点向左移动3位 => 1.101101
(要求移动到整数部分只有1位)
所以,阶码 = 3 + 127 = 130
二进制形式为:10000010
移位后的小数部分是 .101101
尾数存储二进制的101101
实际存储为:0 10000010 101101 000000一位符号位,八位阶码,尾数后面补0
3,小数点尾数控制
#include<iostream>
#include<Windows.h>
using namespace std;
int main(void){
double value = 12.3456789;
// 默认精度是6,所以输出为 12.3457
//(默认情况下,精度是指总的有效数字)
cout << value << endl;
// 把精度修改为4, 输出12.35, 对最后一位四舍五入
// 精度修改后,持续有效,直到精度再次被修改
cout.precision(4);
cout << value << endl;
// 使用定点法, 精度变成小数点后面的位数
// 输出12.3457
cout.flags(cout.fixed);
cout << value << endl;
// 定点法持续有效
// 输出3.1416
cout << 3.1415926535 << endl;
// 把精度恢复成有效数字位数
cout.unsetf(cout.fixed);
cout << value << endl; //输出12.35
cout << 3.1415926535 << endl; //输出3.142
system("pause");
return 0;
}
4.c++输入
只有当输入缓冲区为空的时候,程序才停下来等待输入,用户敲键盘之后必须按Enter键才能放到输入缓冲区,然后cin再去读取