C++_時間表記における5分丸め表記
#C++
あまり綺麗ではないが5分の誤差丸め表記プログラムを書いた
それぞれの分を四捨五入するようにしている
例えば以下のように変換される
658→700
1234→1235
1401→1400
2359→0
code:time.cpp
int fixed(int time) {
int one_digit = time % 10;
int two_digit = time % 100;
if (57 <= two_digit) {
if (time - 2300 > 0) return 0;
else return time + (100-two_digit);
}
if (one_digit < 2) return time - one_digit;
else if (one_digit < 5) return time + (5-one_digit);
else if (one_digit < 7) return time - (one_digit-5);
else if (one_digit < 10) return time + (10-one_digit);
return time;
}
firstフラッグで、floorかceilのどちらで丸めるか指定できるよう作り変えたコード
(trueでfloor指定、falseでceil指定)
code:time_mode.cpp
int fixed(int time, bool first) {
int one_digit = time % 10;
int two_digit = time % 100;
if (!first && 57<=two_digit) return time + (100-two_digit);
if (first) {
if (one_digit < 5) return time - one_digit;
else return time - one_digit + 5;
} else {
if (0 < one_digit && one_digit < 5) return time + (5 - one_digit);
else if (5 < one_digit && one_digit < 10) return time + (10 - one_digit);
}
return time;
}