pow関数
double pow(double x, double y)
xのy乗を返す。
コード #include <iostream> #include <cmath> using namespace std; //四捨五入する double dCalcRoundOff(double Beams, double dNum); //指定の桁数で切り下げる。 double dCalcRoundDown(double Beams, double dNum); //指定の桁数で切り上げる。 double dCalcRoundUp(double Beams, double dNum); void Func1(int num); void main() { Func1((int)100.5); cout << dCalcRoundOff(0.0, 100.5) << endl; cout << dCalcRoundDown(1.0, 105.0) << endl; cout << dCalcRoundDown(1.0, -104.0) << endl; cout << dCalcRoundUp(1.0, 105.0) << endl; cout << dCalcRoundUp(1.0, -104.0) << endl; return; } // void Func1(int num) { cout << num << endl; return; } //指定の桁数で切り上げる。 double dCalcRoundUp(double Beams, double dNum) //Input { static double dAns; if(dNum >= 0.0){ dAns = (dNum) / (pow(10.0, Beams)); int Buff; Buff = (int)(dAns); if(dAns - (double)(Buff) == 0.0){ ; }else{ dAns = dAns + 1; } }else{ dAns = (dNum) / (pow(10.0, Beams)); } dAns = (int)(dAns) * (pow(10.0, Beams)); return dAns; } //指定の桁数で切り下げる。 double dCalcRoundDown(double Beams, double dNum) //Input { static double dAns; if(dNum >= 0.0){ dAns = (dNum) / (pow(10.0, Beams)); }else{ dAns = (dNum) / (pow(10.0, Beams)); int Buff; Buff = (int)(dAns); if(dAns - (double)(Buff) == 0.0){ ; }else{ dAns = dAns - 1; } /* 負の数の場合 -104 → -110 負の数は、絶対値は大きくなる。 */ } dAns = (int)(dAns) * (pow(10.0, Beams)); return dAns; } //四捨五入する double dCalcRoundOff(double Beams, double dNum) //Input { static double dAns; //四捨五入を考慮する if(dNum >= 0.0){ dNum = ((dNum) * (pow(10.0, Beams)) + 0.5); dNum = (int)(dNum); }else{ dNum = ((dNum) * (pow(10.0, Beams)) - 0.5); dNum = (int)(dNum); } //printf("Num --> %f\n", dNum); dAns = (dNum) / (pow(10.0, Beams)); //printf("Num --> %f\n", dNum); return dAns; }
結果 100 101 100 -110 110 -100