@progress/kendo-angular-inputs
Version:
Kendo UI for Angular Inputs Package - Everything you need to build professional form functionality (Checkbox, ColorGradient, ColorPalette, ColorPicker, FlatColorPicker, FormField, MaskedTextBox, NumericTextBox, RadioButton, RangeSlider, Slider, Switch, Te
66 lines (65 loc) • 1.88 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
/**
* @hidden
*/
const MAX_PRECISION = 20;
/**
* @hidden
*/
export const limitPrecision = (precision) => Math.min(precision, MAX_PRECISION);
/**
* @hidden
*/
export const fractionLength = (value) => {
return (String(value).split('.')[1] || "").length;
};
const maxFractionLength = (value1, value2) => {
return Math.max(fractionLength(value1), fractionLength(value2));
};
/**
* @hidden
*/
export const toFixedPrecision = (value, precision) => {
const maxPrecision = limitPrecision(precision);
return parseFloat(value.toFixed(maxPrecision));
};
/**
* @hidden
*/
export const add = (value1, value2) => {
const maxPrecision = maxFractionLength(value1, value2);
return toFixedPrecision(value1 + value2, maxPrecision);
};
/**
* @hidden
*/
export const subtract = (value1, value2) => {
return add(value1, -value2);
};
/**
* @hidden
*/
export const multiply = (value1, value2) => {
const maxPrecision = fractionLength(value1) + fractionLength(value2);
return toFixedPrecision(value1 * value2, maxPrecision);
};
/**
* @hidden
*/
export const divide = (dividend, divisor) => {
if (divisor === 0) {
return NaN;
}
const power = maxFractionLength(dividend, divisor);
const correctionValue = Math.pow(10, power);
return ((correctionValue * dividend) / (correctionValue * divisor));
};
/**
* @hidden
*/
export const remainder = (dividend, divisor) => {
return Math.abs(subtract(dividend, multiply(divisor, Math.floor(divide(dividend, divisor)))));
};