题目描述
难度:Middle
相关话题:哈希表
、数学
给定两个整数,分别表示分数的分子numerator 和分母 denominator,以字符串形式返回小数。
如果小数部分为循环小数,则将循环的部分括在括号内。
示例 1:
输入: numerator = 1, denominator = 2
输出: "0.5"
示例2:
输入: numerator = 2, denominator = 1
输出: "2"
示例3:
输入: numerator = 2, denominator = 3
输出:"0.(6)"
/**
* @ Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @param {number} numerator
* @param {number} denominator
* @return {string}
*/
var fractionToDecimal = function(numerator, denominator) {
if(numerator===0)return "0"
let neg=0,res=''
// 确定正负号
if(numerator<0){neg=neg^1; numerator=-numerator}
if(denominator<0){neg=neg^1; denominator=-denominator}
if(neg===1)res='-'+res
// 确定整数部分
let int=Math.floor(numerator/denominator)
let mod=numerator%denominator
res+=int
if(mod===0)return res
res+="."
// 确定小数部分
let modHash={}
modHash[mod]=res.length
while(mod!==0){
mod*=10
res+=Math.floor(mod/denominator)
mod %= denominator
if(modHash[mod]!=null){
let idx=modHash[mod]
res=res.substring(0,idx)+"("+res.substring(idx)+")"
break
}
modHash[mod]=res.length
}
return res
};
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com