Я не могу решить между Типы "кортеж" Типа , Нулевого указателя , или Regex. 'Foreach' возрос там также. 'Интеллектуальные указатели' само собой разумеется...:-)
В основном, я действительно с нетерпением жду обновления.
Лично я думаю, что интенсивное использование типа нулевого указателя собирается поймать много ошибок. Кортежи являются большими для контакта с реляционными данными. Много интересного материала.
Чтобы найти ближайшее кратное 1 / n:
lower_bound = 1.0 / n * Math.floor(n * your_number);
upper_bound = 1.0 / n * Math.ceil(n * your_number);
Вы можете использовать особую обработку, если ваше число уже кратно 1/16.
// alternate solution so that lower_bound <= your_number < upper_bound
lower_bound = 1.0 / n * Math.floor(n * your_number);
upper_bound = 1.0 / n * Math.floor(n * your_number + 1.0);
Вы умножаете значение на 16, используете метод floor или ceil и делите на 16:
var higher = Math.ceil(number * 16) / 16;
var lower = Math.floor(number * 16) / 16;
function bounds(number, numerator, denominator) {
var frac = denominator/numerator;
return {
lower: Math.floor(frac * number) / frac,
upper: Math.ceil(frac * number) / frac,
}
}
bounds(26.746346081599476,1,16)
// returns an object with properties
// lower : 26.6875
// upper : 26.75
Похоже на округление до ближайшего 16-го…
rounded = Math.round(number * 16) / 16;
Вы можете получить числа, которые не являются точными из-за представления с плавающей точкой, но это не имеет значения в вашем случае, если вы используете его только для кеширования.
На какие наименьшие дроби вы хотите разделить? IE, будут ли 16-е самые маленькие приращения?
Если да, просто умножьте свое число на 16. Обрежьте его до целого числа и разделите на 16, чтобы найти нижнюю границу. Усечь его до int, прибавить 1, затем разделить на 16, чтобы найти верхнюю границу.
Пара стратегий, которые пока не опубликованы:
A) Создайте таблицу поиска, которая отображает цифры после десятичной дроби в ближайшую 16-ю. Просто используйте любую точность, которая вам нужна (вероятно, сотые).
B) создайте таблицу всех 16-х от 0 до 1 и выполните поиск в двоичном стиле с вашим числом% 1.