current
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal floor
suggestion 1 (just avoid 1ms error)
timing unit calculation : ceiling to 15 significant figures
snap timing calculation : decimal floor
suggestion 2 (maximum error will be reduced by half)
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal rounding
example)
this maximum error is 1 ms. but it can be accumulated whenever change BPM.
examle)
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal floor
suggestion 1 (just avoid 1ms error)
timing unit calculation : ceiling to 15 significant figures
snap timing calculation : decimal floor
suggestion 2 (maximum error will be reduced by half)
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal rounding
example)
BPM180, Third beat
current
timing unit calculation = 60000/180 = 333.333333333333
Third beat snap timing = floor(333.333333333333 * 3) = 999
suggestion 1
timing unit calculation = 60000/180 = 333.333333333334
Third beat snap timing = floor(333.333333333334 * 3) = 1000
suggestion 2
timing unit calculation = 60000/180 = 333.333333333333
Third beat snap timing = round(333.333333333333 * 3) = 1000
True timing : 1000
this maximum error is 1 ms. but it can be accumulated whenever change BPM.
examle)
BPM 180 -> 105 -> 180 -> 105 -> 180Finally, this case can cause maximum 5ms error if you use current beatmap editor.