JavaScript 小数转分数
function decimalsToFractional(decimals) {
const formatDecimals = decimals.toFixed(2)
let denominator = 100
let numerator = formatDecimals * 100
let bigger = 0
function recursion() {
bigger = denominator > numerator ? denominator : numerator
for (let i = bigger; i > 1; i--) {
if (Number.isInteger(numerator / i) && Number.isInteger(denominator / i)) {
numerator = numerator / i
denominator = denominator / i
recursion()
}
}
}
recursion()
if (decimals % 1 === 0) {
return `${decimals}`
} else if (numerator / denominator > 1) {
return `${parseInt(numerator / denominator)} + ${numerator % denominator} / ${denominator}`
} else {
return `${numerator} / ${denominator}`
}
}
console.log(this.decimalsToFractional(1.5))
console.log(this.decimalsToFractional(20))
console.log(this.decimalsToFractional(5/2))