@oufucom
Программист C#

Как лучше округлять double с заданной погрешностью/точностью?

В коде встретил такое округление:

static class TraceConvertor
    {
        public const double ValueTolerance = 1e-2;
        public const int ValueDigitTolerance = 2;

        [ MethodImpl( MethodImplOptions.AggressiveInlining ) ]
        public static double RoundByTolerance( double value )
        {
            return Math.Round( value / ValueTolerance ) * ValueTolerance;
        }

        [ MethodImpl( MethodImplOptions.AggressiveInlining ) ]
        public static double RoundByDigitTolerance( double value )
        {
            return Math.Round( value, ValueDigitTolerance );
        }
    }


Первый метод мне достался в наследство, второй мой.
Я не вижу никакой разницы. Но зачем то сделано именно так, может я чего-то не понимаю и первый вариант будет быстрее?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Гм... если фигурирует "округлять", то наверное было бы более честным использовать типы decimal
Ну и как бы Round все-таки быстрее чем Round + деление и умножений (если конечно оптимизатор не приведет все это к одному и тому же)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы