| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- '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
 
 
  |