四舍五入算法 C语言练习
如题:函数fun的功能是将传入的1234.5678在fun函数中分别四舍五入并保留3位小数,2位小数,1位小数,结果在该函数中打印。
//为表述方便,定义 位数 和 看位数 两个概念
//看位数 是指四舍五入时,舍去的那个数所在的 位数,如 1234.5678 保留3位小数,则8就是看位数,其他的数都是位数
#include<stdio.h>
#include<stdlib.h>
void fun(double h){
int num = 0; //变为整数的数
int resNum = 0; //四舍五入后的整数
double res = 0.0; //结果数
//原数:1234.5678
//保留3位,应输出 1234.568000
printf("要保留3位小数操作的数为:\t %lf\n",h);
//转换为整数,将看位数所在的位数也转换为整数。所以,保留3位就是*10000
num = h * 10000;
//使用看位数将整数四舍五入,得到的是整数
resNum = (num + 5) /10; //整数 + 5 ,也就是看位数+5,结果是整数或将进一位或不进位,整数都是多了一个看位数,/10将看位数所在的位数舍去,得到四舍五入后的数1234568
res = resNum/1000.0; //将结果保留3位小数,四舍五入后的整数1234568 /1000(或者1000.0)就是将后3个位数转换为了小数
printf("结果是:%37lf\n",res);
printf("******************************************************************\n");
//原数:1234.5678
//保留2位小数,应输出 1234.570000
printf("要保留2位小数操作的数为:\t %lf\n",h);
num = h * 1000; //将看位数所在的位数的位变成整数
resNum = (num + 5) /10; //四舍五入,舍弃看位数所在的位数
res = resNum / 100.0; //保留两位小数,将整数的后两位转换为小数
printf("结果是:%37lf\n",res);
printf("******************************************************************\n");
//原数:1234.5678
//保留1位小数,应输出 1234.600000
printf("要保留2位小数操作的数为:\t %lf\n",h);
//合为一条语句
res = ((int)(h * 100)+ 5)/10 /10.0;
printf("结果是:%37f\n",res);
}
void main(){
fun(1234.5678);
}
运行结果:fun(1234.5678)
fun(1234.5435)