Как получить процент от BigInteger?

236
08 сентября 2017, 19:39
private int GetCurrentPercentUL()
{
    var maxItem = 100153UL;
    var currentItem = 100150UL;
    return (int)(currentItem / (maxItem / 100M));
}
private int GetCurrentPercentBI()
{
    var maxItem = new BigInteger(100153);
    var currentItem = new BigInteger(100150);
    return (int)(currentItem / (maxItem / 100));
}

Был вариант с ulong и decimal (100M), работал вполне корректно. Потом пришлось увеличить числовой диапазон до BigInteger, и встала проблема с подсчетом процентов. Как правильно и красиво переделать метод GetCurrentPercentBI для корректной работы?

Upd:

private int GetCurrentPercentBI()
{
    var maxItem = new BigInteger(100153);
    var currentItem = new BigInteger(100150);
    var percent = (int)(currentItem / (maxItem / new BigInteger(100)));
    if (percent == 100 && maxItem > currentItem)
        percent = 99;
    return percent;
}

Есть такое решение, но по мне - оно некрасивое. Если есть более корректные варианты - напишите в ответах.

READ ALSO
Поиск внутренних скобок в выражении

Поиск внутренних скобок в выражении

входная строка -"(m*(g*(3+5))*m)"Нужно достать выражение в самых глубоких скобках (со скобками)

261
Растет потребление памяти

Растет потребление памяти

Не могу разобраться почему утекает память в приложение (winform,net)

337
Правильное оформление проекта [требует правки]

Правильное оформление проекта [требует правки]

Всем доброго времени сутокНеделю назад начал писать большой проект на С#

257