Используйте функцию std::round()
Стандартная библиотека C ++ предлагает функции для выполнения округления.Для float
s это:
float round ( float arg );
, округляет arg
до ближайшего целого значения.Теперь вы хотите другое десятичное разрешение.Так что не округляйте ваше значение, округляйте ваше значение до 10000, так что ваша одиночная цифра теперь является прежней 0,0001.Или, в более общем смысле:
float my_round(
float x,
int num_decimal_precision_digits)
{
float power_of_10 = std::pow(10, num_decimal_precision_digits);
return std::round(x * power_of_10) / power_of_10;
}
Обратите внимание, что могут быть проблемы с точностью, поскольку вычисления и представления с плавающей запятой точны только с точностью до определенного числа цифр, а в my_round
у нас есть по крайней мере четыре источникатакой неточности: вычисление степени 10, умножение, деление и фактическое округление.