自然是从右往左的精度高从左往右 ,每次计数都要包括整数部分的1和后面的小数,float型数据保存是将其转化为1到2之间的一个数乘以2的几次方表示 一共32bit 第一个是符号位占1bit 表示2的几次方的几次方值占8bit 就是说2的几次方的范围是-127到127之间 尾数占23bit 比如一个小数转化为 1.345乘以2的-23次方 符号位为正 存次方的 就存-23 尾数的 就存 转化为十进制后前面为345后面全是0的一个大数 1不用存 应为表达方式都是1点几乘以2的多少次方。比如0.000000011 就可以写成 1.1乘以2的?次方 (没有计算 用?代替)如此,从右边算起,可以更大限度的保留尾数,当尾数相加后,积累成不被前面大数不能无视的存在使其在最终结果中有影响。而从左算起,当n很大时,便会有大量的小数因为太小而被无视掉了 ,因为前面始终有个1存在,导致前面的基数太大,不得不放弃后面的数
从右到左的精度高
编程:建立一个分数类。分数类的数据成员包括分子和分母,操作包括约分、通分、比较、加、减、乘、除、求倒数、显示和输入。分数类定义如下:
class fraction{
int above; //分子
int below; //分母
void reduction(); //约分
void makeCommond(fraction); //通分
public:
fraction(int=0,int=1); //构造函数
fraction add(fraction); //两分数相加
fraction sub(fraction); //本分数减去实参分数
fraction mul(fraction); //两分数相乘
fraction div(fraction); //本分数除以实参分数
fraction reciprocal(); //求倒数
bool epual(fraction); //等于运算
bool greaterThan(fraction); //大于运算
bool lessThan(fraction); //小于运算
void display(); //显示分数
void input(); //输入分数
};
[要求] 完成所有成员函数并进行检验。