Sha256: 7432b25619fbeb3255bb02621110471cc33d4c5d2f10d3d213a57fdddc1362d5

Contents?: true

Size: 804 Bytes

Versions: 80

Compression:

Stored size: 804 Bytes

Contents

'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

Version data entries

80 entries across 79 versions & 17 rubygems

Version Path
trusty-cms-6.3.1 node_modules/num2fraction/index.js
boring_generators-0.15.0 tmp/templates/app_template/node_modules/num2fraction/index.js
boring_generators-0.14.0 tmp/templates/app_template/node_modules/num2fraction/index.js
optimacms-0.1.61 spec/dummy/node_modules/num2fraction/index.js
boring_generators-0.13.0 tmp/templates/app_template/node_modules/num2fraction/index.js
boring_generators-0.12.0 tmp/templates/app_template/node_modules/num2fraction/index.js
disco_app-0.18.0 test/dummy/node_modules/num2fraction/index.js
disco_app-0.18.2 test/dummy/node_modules/num2fraction/index.js
trusty-cms-5.0.7 node_modules/num2fraction/index.js
trusty-cms-5.0.6 node_modules/num2fraction/index.js
trusty-cms-5.0.5 node_modules/num2fraction/index.js
trusty-cms-5.0.4 node_modules/num2fraction/index.js
disco_app-0.16.1 test/dummy/node_modules/num2fraction/index.js
disco_app-0.15.2 test/dummy/node_modules/num2fraction/index.js
trusty-cms-5.0.3 node_modules/num2fraction/index.js
trusty-cms-5.0.2 node_modules/num2fraction/index.js
disco_app-0.18.4 test/dummy/node_modules/num2fraction/index.js
disco_app-0.18.1 test/dummy/node_modules/num2fraction/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/num2fraction/index.js
disco_app-0.14.0 test/dummy/node_modules/num2fraction/index.js