Есть ли простой способ в C ++, чтобы округлить с точностью до 1,75 - PullRequest
1 голос
/ 02 апреля 2020

Я попытался найти это на StackOverflow, закройте этот вопрос, если на него уже был дан ответ. Но есть ли в C ++ функция, которая может округлять значение с приращением с десятичным значением? Пожалуйста, обобщите ваш ответ для любого заданного десятичного приращения - я хотел бы также знать, например, как округлить до ближайшего приращения 1.78.

1 Ответ

4 голосов
/ 02 апреля 2020

Специальной функции c для этого не существует, но вы можете легко ее создать. Просто разделите значение на 1,75, затем вызовите std::round, а затем умножьте на 1,75.

например,

double round_to_multiple(double val, double step)
{
    return step * std::round(val / step);
}

Где "step" - размер шага, или несколько. В вашем случае 1.75.

Просто будьте осторожны с ошибкой округления с плавающей точкой. Если вы всегда имеете дело с двумя десятичными разрядами и числа, с которыми вы работаете, находятся в полезном диапазоне, вы можете рассмотреть возможность использования вместо них целых чисел (умноженных на 100), что немного изменит технику.

...