保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'use strict'
 
var abs = Math.abs
var round = Math.round
 
function almostEq(a, b) {
  return abs(a - b) <= 9.5367432e-7
}
 
//最大公约数 Greatest Common Divisor
function GCD(a, b) {
  if (almostEq(b, 0)) return a
  return GCD(b, a % b)
}
 
function findPrecision(n) {
  var e = 1
 
  while (!almostEq(round(n * e) / e, n)) {
    e *= 10
  }
 
  return e
}
 
function num2fraction(num) {
  if (num === 0 || num === '0') return '0'
 
  if (typeof num === 'string') {
    num = parseFloat(num)
  }
 
 
  var precision = findPrecision(num) //精确度
  var number = num * precision
  var gcd = abs(GCD(number, precision))
 
  //分子
  var numerator = number / gcd
  //分母
  var denominator = precision / gcd
 
  //分数
  return round(numerator) + '/' + round(denominator)
}
 
module.exports = num2fraction