Здесь вы можете использовать тот же подход, что и округление до степени 10.
Когда вы хотите округлить до ближайшего 0,1, вы умножаете на 10, округляете, а затем делите на 10. Когда вы хотитеокругляя до ближайшего 0,01, вы умножаете на 100, округляете, а затем делите на 100.
Смотрите схему здесь?Число, на которое вы умножаете и делите, всегда равно 1 на гранулярность!
Таким образом, для гранулярности 0,25 вы умножаете и делите на 4:
print(round(0.3 * 4) / 4)
// or
print(round(0.3 / 0.25) * 0.25)
В более общем случае, учитывая granularity: Double
и число, чтобы округлить x: Double
, мы можем округлить это так:
let rounded = round(x / granularity) * granularity