index.ts 897 B

1234567891011121314151617181920212223242526272829303132
  1. import { isNumber } from '../isNumber';
  2. /**
  3. * 减法函数,用于处理浮点数减法并保持精度。
  4. * @param {number} num1 - 被减数。
  5. * @param {number} num2 - 减数。
  6. * @returns {number} 减法运算的结果,保留正确的精度。
  7. */
  8. export function floatSub(num1 : number, num2 : number) : number {
  9. if (!(isNumber(num1) || isNumber(num2))) {
  10. console.warn('Please pass in the number type');
  11. return NaN;
  12. }
  13. let r1:number, r2:number, m:number, n:number;
  14. try {
  15. r1 = num1.toString().split('.')[1].length;
  16. } catch (error) {
  17. r1 = 0;
  18. }
  19. try {
  20. r2 = num2.toString().split('.')[1].length;
  21. } catch (error) {
  22. r2 = 0;
  23. }
  24. m = Math.pow(10, Math.max(r1, r2));
  25. n = r1 >= r2 ? r1 : r2;
  26. // #ifndef APP-ANDROID
  27. return Number(((num1 * m - num2 * m) / m).toFixed(n));
  28. // #endif
  29. // #ifdef APP-ANDROID
  30. return parseFloat(((num1 * m - num2 * m) / m).toFixed(n));
  31. // #endif
  32. }