index.ts 1.3 KB

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