UNPKG

@lzwme/asmd-calc

Version:

支持浮点数精度的加减乘除四则运算 JS 库。

107 lines (106 loc) 3.18 kB
/** * addition 加法计算。与普通加法运算不同的是,任意参数为 `null/NaN/undefined`,均会被视为 `0` 而忽略 * * ### Example (es module) * ```js * import { add } from 'asmd-calc'; * console.log(add(0.1, 0.2, 3)); * // => 3.3 * ``` * * @returns 永远返回有效的数值,不存在 NaN(视作0处理) */ export declare function add(...args: any[]): number; /** * subtraction 减法计算。与普通减法运算不同的是,任意参数为 `null/NaN/undefined`,均会被视为 `0` 而忽略 * * ### Example (es module) * ```js * import { sub } from 'asmd-calc'; * console.log(sub(0.3, 0.2, 0.1)); * // => 0 * ``` * * @param args 第一个值为减数,后续值均为被减数 * @returns 永远返回有效的数值,不存在 NaN(视作0处理) */ export declare function sub(...args: any[]): number; /** * multiplication 乘法计算。 * - 注意小数位不宜过长(总长度不超过18位,结果不超过18位) * - 任意参数为 `null/NaN/undefined`,均会被视为 `0` * * ### Example (es module) * ```js * import { mul } from 'asmd-calc'; * console.log(mul(3, 0.2, 0.1)); * // => 0.06 * ``` * * @returns 永远返回有效的数值,不存在 NaN(视作0处理) */ export declare function mul(...args: any[]): number; /** * division 除法计算。 * * 任意参数为 `null/NaN/undefined`,均会被视为 `0`。于是会有如下情况: * ``` * NaN / 1 = 0 / 1 = 0 * 0 / NaN = 0 / 0 = NaN * 1 / NaN = 1 / 0 = Infinity * ``` * * ### Example (es module) * ```js * import { div } from 'asmd-calc'; * console.log(div(0.6, 0.1, 0.2)); * // => 30 * ``` * * @param args 第一个参数为除数,后续参数均为被除数 * @returns 永远返回有效的数值。 */ export declare function div(...args: any[]): number; /** * 最多保留 N 位小数 * * ### Example (es module) * ```js * import { keepDotDLength } from 'asmd-calc'; * console.log(keepDotDLength(0.66666, 2)); * // => 0.66 * console.log(keepDotDLength(0.66666, 2, false)); * // => 0.66 * console.log(keepDotDLength(0.66666, 2, true)); * // => 0.67 * ``` * * @param value 数值 * @param precision 小数位数,应为 0-16 之间的整数 * @param isrounding 是否四舍五入取值。默认 false */ export declare function keepDotLength(value: number | string, precision: number, type?: 'ceil' | 'round' | 'fround' | 'floor' | boolean): number | null; /** * toFixed 方法重写 【解决 Number.toFixed 方法在不同浏览器表现不一致的问题】 * * ### Example (es module) * ```js * import { toFixed } from 'asmd-calc'; * console.log(toFixed(0.66666, 2)); * // => 0.67 * console.log(toFixed(1.45, 1)); * // => 1.5 * console.log(toFixed(1.55, 1)); * // => 1.6 * console.log(toFixed(1.515, 2)); * // => 1.52 * ``` * * @param value 数值 * @param precision 小数位数,应为 0-16 之间的整数 * @param type 进位处理方法: * - round - 四舍五入 * - ceil 向上取整 * - floor 向下取整(截断) */ export declare function toFixed(value: number | string, precision: number, type?: 'ceil' | 'round' | 'fround' | 'floor'): string | null;