У меня сложный математический вопрос, который ломает мой мозг, мою доску и все мои ручки. Я работаю с файлом, который выражает 2 значения: умножение и процент . Оба эти значения должны быть целыми числами. Эти два значения умножаются вместе для получения диапазона . Диапазон - это значение с плавающей точкой.
Мои пользователи редактируют диапазон, и мне нужно вычислить новый процент и значение мультипликатора. Смущены еще? Вот пример:
Multiplicand: 25000 Apples
Percentage: 400 (This works out to .4% or .004)
Range: 100.0 Apples (Calculated by Multiplicand * Percentage)
Чтобы усложнить ситуацию, допустимые значения для процента составляют 0-100000. (Значение 0-100%) Multiplicand - это значение от 1 до 32 бит int max (предположительно без знака).
Мне нужно разрешить пользователям вводить диапазон, например так:
Range: .04 Apples
И рассчитать соответствующий процент и коэффициент. Используя первый пример:
OriginalMultiplicand: 25000 Apples
OriginalPercentage: 400 (This works out to .4% or .004)
OriginalRange: 100.0 Apples (Calculated by Multiplicand * Percentage)
NewRange: .01 Apples
NewPercentage: 40
NewMultiplicand: 25 Apples
Пример расчета прост, все, что требовалось, - это уменьшить мультипликатор и процентное соотношение вниз по коэффициенту масштабирования нового и старого диапазона. Проблема возникает, когда пользователь изменяет значение на что-то вроде 1400.00555. Внезапно у меня нет чистого способа отрегулировать два значения.
Мне нужен алгоритмический подход для получения значений M & P, которые дают максимально возможное значение для желаемого диапазона. Есть предложения?