Я хочу округлить поплавки со смещением, либо всегда вниз, либо всегда вверх. В коде есть определенный момент, где мне это нужно, остальная часть программы должна округляться до ближайшего значения, как обычно.
Например, я хочу округлить до ближайшего кратного 1/10. Ближайшее число с плавающей запятой к 7/10 примерно равно 0,69999998807, а ближайшее число к 8/10 примерно равно 0,80000001192. Когда я округляю числа, я получаю два результата. Я бы предпочел округлить их таким же образом. 7/10 следует округлить до 0,70000004768, а 8/10 — до 0,80000001192.
В этом примере я всегда округляю в большую сторону, но в некоторых местах я хочу всегда округлять в меньшую сторону. К счастью, я имею дело только с положительными значениями в каждом из этих мест.
Строка, которую я использую для округления, это floor(val * 100 + 0.5) / 100
. Я программирую на С++.