修约函数,也称为银行家算法,相比较于传统的四舍五入,这种进位方式在某些场合下优先级更高,泛用性更强
#include#include #include using namespace std; //获取个位数字 int Getnum(double n){ int a,b; a = n; b = n / 10; return a - b * 10; } //修约函数,n为保留的位数,a为需要修正的数字 double Fixfunction(int n,double a){ int num1,num2; num1 = Getnum(a * pow(10,n)); num2 = Getnum(a * pow(10,n+1)); if(num2 < 5){ double a1 = a * pow(10,n); int a2 = a1; double a3 = a2 / pow(10,n); return a3; } else if(num2 > 5){ double b = a * pow(10,n) + 1; int b1 = b; double b2 = b1 / pow(10,n); return b2; } else if(num2 == 5){ if(num1 % 2 == 0){ double c = a * pow(10,n); int c1 = c; double c2 = c1 / pow(10,n); return c2; } else{ double d = a * pow(10,n) + 1; int d1 = d; double d2 = d1 / pow(10,n); return d2; } } }
可用于大学物理实验的数据处理当中



