web
9 小时以前 49fa0d82a40345342966e810b44429aec0480ef3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { floatMul } from '../floatMul';
import { isNumber } from '../isNumber';
 
/**
 * 除法函数,用于处理浮点数除法并保持精度。
 * @param {number} num1 - 被除数。
 * @param {number} num2 - 除数。
 * @returns {number} 除法运算的结果,保留正确的精度。
 */
export function floatDiv(num1:number, num2:number):number {
  // 如果传入的不是数字类型,则打印警告并返回NaN
  if (!isNumber(num1) || !isNumber(num2)) {
    console.warn('请传入数字类型');
    return NaN;
  }
 
  let m1 = 0, // 被除数小数点后的位数
    m2 = 0, // 除数小数点后的位数
    s1 = num1.toString(), // 将被除数转换为字符串
    s2 = num2.toString(); // 将除数转换为字符串
 
  // 计算被除数小数点后的位数
  try {
    m1 += s1.split('.')[1].length;
  } catch (error) {}
 
  // 计算除数小数点后的位数
  try {
    m2 += s2.split('.')[1].length;
  } catch (error) {}
 
  // 进行除法运算并处理小数点后的位数,使用之前定义的乘法函数保持精度
  // #ifdef APP-ANDROID
  return floatMul(
    parseFloat(s1.replace('.', '')) / parseFloat(s2.replace('.', '')),
    Math.pow(10, m2 - m1),
  );
  // #endif
  // #ifndef APP-ANDROID
  return floatMul(
    Number(s1.replace('.', '')) / Number(s2.replace('.', '')),
    Math.pow(10, m2 - m1),
  );
  // #endif
}