decimal.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * 数字精度处理工具函数
  3. */
  4. /**
  5. * 加法运算(避免浮点数精度问题)
  6. * @param num1 第一个数
  7. * @param num2 第二个数
  8. * @param precision 精度,默认为2位小数
  9. * @returns 计算结果
  10. */
  11. export function add(num1: number, num2: number, precision = 2): number {
  12. return parseFloat((num1 + num2).toFixed(precision))
  13. }
  14. /**
  15. * 减法运算(避免浮点数精度问题)
  16. * @param num1 被减数
  17. * @param num2 减数
  18. * @param precision 精度,默认为2位小数
  19. * @returns 计算结果
  20. */
  21. export function subtract(num1: number, num2: number, precision = 2): number {
  22. return parseFloat((num1 - num2).toFixed(precision))
  23. }
  24. /**
  25. * 乘法运算(避免浮点数精度问题)
  26. * @param num1 第一个数
  27. * @param num2 第二个数
  28. * @param precision 精度,默认为2位小数
  29. * @returns 计算结果
  30. */
  31. export function multiply(num1: number, num2: number, precision = 2): number {
  32. return parseFloat((num1 * num2).toFixed(precision))
  33. }
  34. /**
  35. * 除法运算(避免浮点数精度问题)
  36. * @param num1 被除数
  37. * @param num2 除数
  38. * @param precision 精度,默认为2位小数
  39. * @returns 计算结果
  40. */
  41. export function divide(num1: number, num2: number, precision = 2): number {
  42. return parseFloat((num1 / num2).toFixed(precision))
  43. }
  44. /**
  45. * 格式化数字,保留指定小数位数
  46. * @param num 数字
  47. * @param precision 小数位数
  48. * @returns 格式化后的数字
  49. */
  50. export function formatNumber(num: number, precision = 2): number {
  51. return parseFloat(num.toFixed(precision))
  52. }