Изменяемая точность округления - C#

Узнай цену своей работы

Формулировка задачи:

Помогите с функцией подбора необходимой точности округления. Есть у меня своя функция округления чисел.
public static double round(double numeral, double accuracy, int down_middle_up = 0)
numeral - число что мне надо округлить accuracy - точность округления down_middle_up - округляю до ближайшего или ближайшего наибольшего или ближайшего наименьшего Точность округления accuracy я иногда задаю в зависимости от числа numeral. То есть если: numeral = 0,001234567 и accuracy = 0,000001 - на выходе 0,001235 numeral = 1,234567 и accuracy = 0,001 - на выходе 1,235 numeral = 12345,67 и accuracy = 10 - на выходе 12350 В этом примере остается 4 значащих числа. Очень часто самого numeral я не знаю. Так же иногда мне нужно лишь одно значащее число. Хотелось бы функцию что то типа:
public static double get_accuracy(double numeral, int num)
{
// здесь прошу помощи
}
Где бы я задал число = numeral и num = количество значащих чисел, а функция вернула необходимую точность округления. Допустим при: numeral = 123 и num = 1, ответ = 100. numeral = 123 и num = 2, ответ = 10. numeral = 0,0123 и num = 2, ответ = 0,001. numeral = 0,0123 и num = 1, ответ = 0,01. В голову кроме как посимвольно перебрать numeral, ничего не лезет. Может есть какой способ проще, элегантней?

Решение задачи: «Изменяемая точность округления»

textual
Листинг программы
double RoundToSignificantDigits(double d, int digits)
        {
            if (d == 0)
                return 0;
 
            double scale = Math.Pow(10, Math.Floor(Math.Log10(Math.Abs(d))) + 1);
            return scale * Math.Round(d / scale, digits);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы