Вы должны использовать второй вызов для включения таймеров:
Подробнее здесь
test('rateLimit', () => {
const action = jest.fn();
const doAction = rateLimit(action, 100);
doAction(); // This should increment the call count
doAction(); // This shouldn't, because 100ms hasn't elapsed yet
jest.runAllTimers();
doAction(); // This should increment the count again
jest.runAllTimers();
expect(action).toHaveBeenCalledTimes(2);
});
Лучшая вещь сделать состоит в том, чтобы реализовать дробный класс (или класс рационального числа). Обычно это взяло бы числитель и знаменатель и смогло бы обеспечить двойное, и сделать основную математику с другими дробными объектами. Это должно также смочь проанализировать и отформатировать части.
Рациональная Арифметика на Rosetta Code похожа на что-то хорошее для запуска с.
Хорошо короче говоря, нет никакого истинного способа извлечь исходную часть из десятичного числа.
Пример: возьмите 5/10
Вы доберетесь 0.5
теперь, 0.5 также переводит назад в 1/2, 2/4, 3/6, и т.д.
Ваш лучший выбор состоит в том, чтобы сохранить каждое целое число отдельно и выполнить вычисление позже.
Я боюсь, что нет никаких легких ответов для Вас на этом. Для создания части необходимо будет разделить текстовое поле на '/', преобразовать эти две половины в double
s, и отделяют их. Что касается преобразования его назад к части, необходимо будет взломать учебник по математике и понять его. (Еще хуже, двойное не на самом деле точно — можно думать, что это имеет 0.1 в нем, но это действительно имеет 0.09999999999999998726 или что-то как этот, таким образом, необходимо будет выбрать точность и пойти для нее или записать своего рода дробный класс, это основано на паре целых чисел.)
Метод, как сказано, должен сохранить числитель и знаменатель, очень в способе, которым можно записать это на бумаге.
поскольку 'C' используют
Библиотека арифметики многократно увеличенной точности GNU
ищите 'рациональный' в документах.
Существует ли простой способ вычислить десятичное значение к части?
При ограничении десятичных значений определенным числом десятичных очков, Вы могли бы создать справочную таблицу.
0.3333, 1/3 0.6666, 2/3 0.0625, 1/16 0.1250, 1/8 0.2500, 1/4 0.5000, 1/2 0.7500, 3/4 etc...
Таким образом, если ввод данных пользователем 0.5 Вы заполняете его 0, пока Вы не получили 4 десятичных разряда. Вы затем использовали бы справочную таблицу для возврата "1/2". Справочная таблица должна, вероятно, быть своего рода словарем.
Не было бы слишком трудно сделать оценку также. Например, если бы пользователь вошел 0.0624, то Вы могли бы легко выбрать значение в таблице, самой близкой к тому десятичному числу. В этом случае это возвратило бы "1/16".
Не позволяйте вводу/вводу конечного множества десятичных/дробных волнений пар Вы (это является действительно не настолько большим в зависимости от точности, которую Вы выбираете).
Если бы все остальное перестало работать, возможно, поиск Google показал бы библиотеку, которая делает этот вид этого для Вас.