round関数
intを有効桁数指定で四捨五入したいのだが、もう少しまともに書けないものか・・・。
template<class T> int round (T a,int n) { //aを有効桁数n桁で四捨五入 //丸め部分がちょうど5なら偶数に丸める int x[64], f = 0, i = 0; T m = 1; for (;;) { x[i] = a%10, a /= 10; if (a==0) break; m *= 10, i++; } for (x[i+1] = 0;i>-1;i--) { if (n == 0) { if (x[i]>5) { a += m*10; break; } if (x[i]<-5) { a += -m*10; break; } if ((x[i]==5)|(x[i]==-5)) { n = x[i+1]%2; if (n) { a += n*m*10; break; } } else break; } else if (n < 0) { if (x[i]>0) { a += m*10; break; } if (x[i]<0) { a += -m*10; break; } } else a += m*x[i], m /= 10; if (x[i]) f = 1; n -= f; } return a; }