number.ts 571 B

123456789101112131415161718
  1. /**
  2. * Solve the problem of js addition accuracy
  3. * e.g.
  4. * 0.1 + 0.2 => 0.30000000000000004
  5. * plus(0.1, 0.2) => 0.3
  6. * @param {Number} num1
  7. * @param {Number} num2
  8. */
  9. export function plus(num1: number, num2: number) {
  10. const num1Digits = (num1.toString().split('.')[1] || '').length;
  11. const num2Digits = (num2.toString().split('.')[1] || '').length;
  12. const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
  13. return (num1 * baseNum + num2 * baseNum) / baseNum;
  14. }
  15. export function minus(num1: number, num2: number) {
  16. return plus(num1, -num2);
  17. }