add floatAdd
This commit is contained in:
27
js/floatAdd.ts
Normal file
27
js/floatAdd.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { isNumber } from "lodash-es";
|
||||
|
||||
/**
|
||||
* 计算两个浮点数相加
|
||||
* @param num1 数值1
|
||||
* @param num2 数值2
|
||||
* @returns 相加之和
|
||||
* @description 使用两个数中小数点后位数较长的作为基数,抹平两个数的小数点,整数相加之后再除以基数,还原小数点。注意整体数值的位数不能超过最大整数范围
|
||||
*/
|
||||
export const floatAdd = (num1: number, num2: number) => {
|
||||
if (!isNumber(num1) || !isNumber(num2)) return NaN;
|
||||
let baseNum1: number;
|
||||
let baseNum2: number;
|
||||
try {
|
||||
baseNum1 = num1.toString().split(".")[1].length;
|
||||
} catch (e) {
|
||||
baseNum1 = 0;
|
||||
}
|
||||
try {
|
||||
baseNum2 = num2.toString().split(".")[1].length;
|
||||
} catch (e) {
|
||||
baseNum2 = 0;
|
||||
}
|
||||
const baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
|
||||
const result = ((num1 * baseNum + num2 * baseNum) / baseNum).toFixed(2);
|
||||
return +result;
|
||||
};
|
Reference in New Issue
Block a user