123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /* 加减乘除精度计算 */
- //相加
- export const addNum = function addNum(arg1: number, arg2: number): number {
- arg1 = arg1 ? arg1 : 0;
- arg2 = arg2 ? arg2 : 0;
- let r1, r2, m, c;
- try {
- r1 = arg1.toString().split('.')[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = arg2.toString().split('.')[1].length;
- } catch (e) {
- r2 = 0;
- }
- c = Math.abs(r1 - r2);
- m = Math.pow(10, Math.max(r1, r2));
- if (c > 0) {
- let cm = Math.pow(10, c);
- if (r1 > r2) {
- arg1 = Number(arg1.toString().replace('.', ''));
- arg2 = Number(arg2.toString().replace('.', '')) * cm;
- } else {
- arg1 = Number(arg1.toString().replace('.', '')) * cm;
- arg2 = Number(arg2.toString().replace('.', ''));
- }
- } else {
- arg1 = Number(arg1.toString().replace('.', ''));
- arg2 = Number(arg2.toString().replace('.', ''));
- }
- return (arg1 + arg2) / m;
- };
- //减法
- export const subtraction = function subtraction(
- num1: number,
- num2: number
- ): number {
- var r1, r2, m, floatNum;
- try {
- r1 = num1.toString().split('.')[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = num2.toString().split('.')[1].length;
- } catch (e) {
- r2 = 0;
- }
- m = Math.pow(10, Math.max(r1, r2));
- return (num1 * m - num2 * m) / m;
- };
- //相乘
- export const multiply = function multiply(arg1: number, arg2: number): number {
- arg1 = arg1 ? arg1 : 0;
- arg2 = arg2 ? arg2 : 0;
- let r1, r2, m, c;
- try {
- r1 = arg1.toString().split('.')[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = arg2.toString().split('.')[1].length;
- } catch (e) {
- r2 = 0;
- }
- c = Math.abs(r1 - r2);
- m = Math.pow(10, Math.max(r1, r2) * 2);
- if (c > 0) {
- let cm = Math.pow(10, c);
- if (r1 > r2) {
- arg1 = Number(arg1.toString().replace('.', ''));
- arg2 = Number(arg2.toString().replace('.', '')) * cm;
- } else {
- arg1 = Number(arg1.toString().replace('.', '')) * cm;
- arg2 = Number(arg2.toString().replace('.', ''));
- }
- } else {
- arg1 = Number(arg1.toString().replace('.', ''));
- arg2 = Number(arg2.toString().replace('.', ''));
- }
- return (arg1 * arg2) / m;
- };
- //相除
- export const accDiv = function accDiv(arg1: number, arg2: number): number {
- var t1 = 0,
- t2 = 0,
- r1,
- r2;
- try {
- t1 = arg1.toString().split('.')[1].length;
- } catch (e) {}
- try {
- t2 = arg2.toString().split('.')[1].length;
- } catch (e) {}
- r1 = Number(arg1.toString().replace('.', ''));
- r2 = Number(arg2.toString().replace('.', ''));
- let n = (r1 / r2) * Math.pow(10, t2 - t1);
- return Math.round(n)
- }
|