一. 变量
1. 浮点计算的问题
1. 1 浮点计算得不精确性
1) 误差来源
参考文献1《计算机组成原理》,对于浮点范围和误差来源 有清晰的介绍
根据浮点24位精度尾数的设计,浮点的有效为为2e24,最大表示16777216,有效位数为10进制的8位或7位;在计算中由于小数精度只有7位,乘法的交换律结合律等会导致精度变化。
2) 误差传递
有效位误差,接近的数字计算中会丢失精度,1.2223 - 1.2222 计算后只有一位精度;
在多项式计算中,由浮点自身精度原因产生的相对误差会导致误差传播
1. 2 浮点转换整形
将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。
int iNum;
float fNum = 1.14;
iNum = fNum; //iNum的值为1
2. 整形
unsigned char/char的存储长度为4字节
unsigned char a = 0xFF;
~a == 0xFFFF FF00;
1.Alan Clements,计算机组成原理