.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / num2fraction / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/num2fraction/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/num2fraction/index.js
new file mode 100644 (file)
index 0000000..659deca
--- /dev/null
@@ -0,0 +1,48 @@
+'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
+