Как округлить десятичную дробь до определенной дроби в C #? - PullRequest
4 голосов
/ 02 февраля 2009

В C # округление числа легко:

Math.Round(1.23456, 4); // returns 1.2346

Однако я хочу округлить число так, чтобы дробная часть числа округлялась до ближайшей дробной части предопределенной дроби (например, 1/8), и я пытаюсь выяснить, есть ли в библиотеке .NET уже это встроенный.

Так, например, если я хочу округлить десятичное число до целой восьмой, то я бы хотел вызвать что-то вроде:

Math.RoundFractional(1.9, 8); // and have this yield 1.875
Math.RoundFractional(1.95, 8); // and have this yield 2.0

Итак, первый параметр - это число, которое я хочу округлить, а второй параметр определяет долю округления. Таким образом, в этом примере после округления цифры после десятичной запятой могут быть только одним из восьми значений: .000, .125, .250, .375, .500, .625, .750, .875

Вопросы: встроена ли эта функция в .NET где-нибудь? Если нет, есть ли у кого-нибудь ссылка на ресурс, объясняющий, как подойти к решению этой проблемы?

Ответы [ 2 ]

17 голосов
/ 02 февраля 2009

Вы можете сделать это:

Math.Round(n * 8) / 8.0
6 голосов
/ 02 февраля 2009

Не знаю, встроен ли он в .NET, но я бы просто сделал:

Math.Round(x * 8, 0) / 8;

чтобы округлить до 8 числа.

Замените ваш любимый номер на другие "разрешения".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...