Версия C# округляет double
до одного десятичного знака, версия C ++ округляет float
до ближайшего целого числа.
Округление двоичной плавающей запятой до фиксированного числа десятичных разрядов места на самом деле не имеют особого смысла, так как округленное число, скорее всего, будет приблизительным. Например, 0.8
нельзя представить точно в двоичной форме с плавающей запятой.
Функция округления в C ++ округляет только до ближайшего целочисленного значения, что, учитывая вышеизложенное, является разумным выбором.
You можно восстановить поведение C# (округление до 1 десятичного знака) с помощью std::round(0.850 * 10) / 10
.
Обратите внимание, что я опустил суффикс f
, чтобы соответствовать типу C# double
.