// 用于处理数据格式化的方法

/**
 * @description 四舍五入保留小数
 * @param {Number} value 需要格式化的值
 * @param {Number} n 保留的小数位数
 * @returns {Number} 结果
 */
export const formatFloat = (value, n) => {
  if (!value) { return (0.000).toFixed(n) }
  if (!n) {
    n = 0
  }
  const powValue = Math.pow(10, n)
  const newV = Math.round(Number(value) * powValue) / powValue
  return newV.toFixed(n)
}

/**
 * @description 向下取整保留小数
 * @param {Number} value 需要格式化的值
 * @param {Number} n 保留的小数位数
 * @returns {Number} 结果
 */
export const formatFloorFloat = (value, n) => {
  if (!value) { return (0.000).toFixed(n) }
  if (!n) {
    n = 0
  }
  const powValue = Math.pow(10, n)
  const newV = Math.floor(Number(value) * powValue) / powValue
  return newV.toFixed(n)
}

/**
 * @description 字符串转二进制
 */
export const strToBinary = (str) => {
	var result = []
	var list = str.split("")
	for(var i = 0; i < list.length; i++){
		if(i != 0){
			result.push(" ")
		}
		var item = list[i]
		var binaryStr = item.charCodeAt().toString(2)
		result.push(binaryStr)
	}   
	return result.join("")
}

/**
 * @description 转千分位 100,010.00
 */
export const formatThousandDot = (value, n) => {
  if (!value || value === 0) { return '0' }
  let num = value
  if (n || n === 0) {
    num = formatFloat(num, n)
  }
  num = num + ''
  return num.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,')
}

/**
 * 处理位数国产
 * 小于5位没有
    6位  e.g. 123456=123.4K 小数点1位
    7位  e.g  1234567=1.234M 小数点3 位
    8位  e.g  12345678=12.34M 小数点2 位
    9位  e.g  123456789=123.4M 小数点1位
    10位 e.g  1234567891=1.234B 小数点3位
    11位 e.g  12345678912=12.34B 小数点2 位
    12位 e.g  123456789123=123.4B 小数点1位
    KMBT
 */
export const formatKMB = (value) => {
  if (!value) { return value }

  return formatThousandDot(value, 0)

  // const flagNum = Math.floor(Number(value))
  // const flagNumStr = flagNum + ''
  // const length = flagNumStr.length

  // let result
  // if (length === 5) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000, 2)) + 'K'
  // } else if (length === 6) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000, 1)) + 'K'
  // } else if (length === 7) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000, 3)) + 'M'
  // } else if (length === 8) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000, 2)) + 'M'
  // } else if (length === 9) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000, 1)) + 'M'
  // } else if (length === 10) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000, 3)) + 'B'
  // } else if (length === 11) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000, 2)) + 'B'
  // } else if (length === 12) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000, 1)) + 'B'
  // } else if (length === 13) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000 / 1000, 3)) + 'T'
  // } else if (length === 14) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000 / 1000, 2)) + 'T'
  // } else if (length === 15) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000 / 1000, 1)) + 'T'
  // } else if (length > 15 ) {
  //   result = parseFloat(formatFloorFloat(flagNum / 1000 / 1000 / 1000 / 1000, 1)) + 'T'
  // } else {
  //   result = formatThousandDot(flagNum, 0)
  // }
  // return result
}

export default {
	formatFloat,
	strToBinary,
	formatThousandDot
}