Как округлить число в зависимости от его размера (с .Net) - PullRequest
2 голосов
/ 07 ноября 2011

Мне нужно динамически ограничивать точность числа в зависимости от его размера.Я имею в виду, если у меня есть 8903.234, я хочу его без десятичных чисел (8903), если у меня есть 849342.23, я хочу, чтобы он заканчивался двумя нулями (849300), или если я хочу 6.589654, я хочу, чтобы он был округлен до 3 десятичных знаков (6.589).

Кто-нибудь с идеей, как это реализовать?(Шкала еще не определена, но будет линейной)

Правка: чтобы писать лучше, чем больше число, тем меньше точность, которую я хочу.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Я думаю, что мы говорим о "значимых цифрах".Вы можете использовать Math.log (число), чтобы получить шкалу вашего числа, а затем просто вычесть количество значащих цифр, чтобы сохранить, разделить, округлить, умножить, получить прибыль!

  double multiplier = Math.Pow(10, (Math.Floor(Math.Log10(value)) + 1 - digitCount));
  double roundedValue = multiplier * Math.Round(value / multiplier);

Возможно, вам также понадобитсяпозаботьтесь об ошибках точности с плавающей точкой.

0 голосов
/ 07 ноября 2011

Вот несколько идей, использующих метод форматирования.И некоторые из пользовательских (вероятно, что вы можете использовать) здесь

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