Округление чисел - C# (181712)
Формулировка задачи:
Всем привет, стоит такая задача..
У нас есть 3 числа, допустим
345 78 25
нам нужно разделить первое на второе и округлить до точности третьего, т.е
(345/25) и округляем до 25 знаков после запятой
ответ должен получиться: 4.4230769230769230769230769
Какие есть варианты)?
Решение задачи: «Округление чисел»
textual
Листинг программы
// = x/y округление до n знаков, дробная часть выводтся групами по g цифр с разделителями "пробел"
// если g <=0 то разделителей нет
static public string delenieDoN(int x, int y, int n, int g = -1) {
string rez;
int r;
int o;
int py;
o = Math.Abs(x % y);
py = Math.Abs(y);
//целая часть
r = x / y;
int[] a = new int[n];
//часть после точки
if (n > 0) {
for (int i = 0; i < n ; i++) {
a[i] = o * 10 / py;
o = o * 10 % py;
}
}
//округление
if ((o * 10 / py) > 4) {
int j = n - 1;
a[j]++;
while ((j>0)&&(a[j]>9)){
a[j] = 0;
j--;
a[j]++;
}
}
if (a[0]>9){
a[0]=0;
if (r>0) {
r++;
}
else{
r--;
}
}
//строка
rez = "" + r;
if (n > 0) {
rez += ".";
for (int i = 0; i < n; i++) {
// вставка разделителя групп
if ((g > 0) && (i > 0) && (i % g == 0)) {
rez += " ";
}
rez += a[i];
}
}
return rez;
}