C程序中“读入三个双精度数求平均值并保留此平均值小数点后一位且四舍五入”怎么办?
1个回答
展开全部
单精度实数在内存中占32bit 有效数字为6~7位,
双精度实数占内存单元为64bit 有效数字为15~16位。
所以双精度数不是小数点后有两个小数的数。
d*=10;
d+=0.5;
d/=10;
这三条语句是对小数点后第二位小数四舍五入。
例如d=1.26;
d*=10; // 12.6
d+=0.5; //13.1
d/=10; //1.31
printf("%.1lf\n",d); // 1.3
很明显,若小数点后第二位小数大于等于5,就会往前一位进位。就是四舍五入了。其实
d+=0.05;
就能实现了。
双精度实数占内存单元为64bit 有效数字为15~16位。
所以双精度数不是小数点后有两个小数的数。
d*=10;
d+=0.5;
d/=10;
这三条语句是对小数点后第二位小数四舍五入。
例如d=1.26;
d*=10; // 12.6
d+=0.5; //13.1
d/=10; //1.31
printf("%.1lf\n",d); // 1.3
很明显,若小数点后第二位小数大于等于5,就会往前一位进位。就是四舍五入了。其实
d+=0.05;
就能实现了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询