| Server IP : 103.234.187.230 / Your IP : 216.73.216.216 Web Server : Apache System : Linux lserver42043-ind.megavelocity.net 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 User : apache ( 48) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/senocare/node_modules/num2fraction/ |
Upload File : |
'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