У меня сложный математический вопрос, который разбивает мой мозг, мою доску и все мои ручки. Я работаю с файлом, который выражает 2 значения, multipicand и Процент. Оба эти значения должны быть целыми числами. Эти два значения умножаются вместе для получения диапазона . Диапазон - это значение поплавка.Вывести целочисленные коэффициенты поплавкового значения?
Мои пользователи редактируют диапазон, и мне нужно рассчитать новый процент и значение мультипликатора. Еще не запутались? Ниже приведен пример:
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, которые производят максимально возможное значение в желаемом диапазоне. Какие-либо предложения?
Действительно ли пользователи будут вводить значение, равное 1400.00555, или это артефакт неточности поплавка? Существуют ли какие-либо правила относительно того, как вы настраиваете Multiplicand и Percentage, чтобы соответствовать вновь введенному диапазону, то есть если Range теперь равен 6, имеет ли значение, если Multiplicand равен 2, а Percentage - 3 или наоборот? –
Название несколько вводит в заблуждение, поскольку ваш процент не является ДЕЙСТВИТЕЛЬНО целым числом, это десятичное значение, представленное как целое число (предположительно, чтобы облегчить его хранение) –
Хотя пользователи могут не вводить 1400.00555, я мог бы легко увидеть их ввод что-то вроде 133.33333333333333333333333. Нет правил относительно Multiplicand и Percentage, если диапазон правильный. Процент используется как номер фиксированной точки в моем коде, но он представлен как целое число. – 2009-08-19 22:32:34