@lzwme/asmd-calc
Version:
支持浮点数精度的加减乘除四则运算 JS 库。
107 lines (106 loc) • 3.18 kB
TypeScript
/**
* 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;