Изменяемая точность округления - C#
Формулировка задачи:
Помогите с функцией подбора необходимой точности округления.
Есть у меня своя функция округления чисел.
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 я не знаю. Так же иногда мне нужно лишь одно значащее число. Хотелось бы функцию что то типа:
Где бы я задал число = 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, ничего не лезет. Может есть какой способ проще, элегантней?
public static double round(double numeral, double accuracy, int down_middle_up = 0)
public static double get_accuracy(double numeral, int num) { // здесь прошу помощи }
Решение задачи: «Изменяемая точность округления»
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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д