export const PopsMathFloatUtils = {
  /**
   * 判断数字是否是浮点数
   * @param num
   */
  isFloat(num: number): boolean {
    return Number(num) === num && num % 1 !== 0;
  },
  /**
   * 浮点数加法
   * @param number1
   * @param number2
   */
  add(number1: number, number2: number) {
    let number1length, number2length;
    try {
      number1length = number1.toString().split(".")[1].length;
    } catch {
      number1length = 0;
    }
    try {
      number2length = number2.toString().split(".")[1].length;
    } catch {
      number2length = 0;
    }
    const powValue = Math.pow(10, Math.max(number1length, number2length));
    return Math.round(number1 * powValue + number2 * powValue) / powValue;
  },
  /**
   * 减法
   * @param number1
   * @param number2
   */
  sub(number1: number, number2: number) {
    let number1length, number2length;
    try {
      number1length = number1.toString().split(".")[1].length;
    } catch {
      number1length = 0;
    }
    try {
      number2length = number2.toString().split(".")[1].length;
    } catch {
      number2length = 0;
    }
    const powValue = Math.pow(10, Math.max(number1length, number2length));
    const fixedValue = number1length >= number2length ? number1length : number2length;
    return (Math.round(number1 * powValue - number2 * powValue) / powValue).toFixed(fixedValue);
  },
  /**
   * 除法
   * @param number1
   * @param number2
   */
  division(number1: number, number2: number) {
    let number1length, number2length;
    try {
      number1length = number1.toString().split(".")[1].length;
    } catch {
      number1length = 0;
    }
    try {
      number2length = number2.toString().split(".")[1].length;
    } catch {
      number2length = 0;
    }
    const number1ReplaceValue = Number(number1.toString().replace(".", ""));
    const number2ReplaceValue = Number(number2.toString().replace(".", ""));
    return (number1ReplaceValue / number2ReplaceValue) * Math.pow(10, number2length - number1length);
  },
};
