166. 分数到小数
思路:模拟除法
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
long numeratorLong = numerator, denominatorLong = denominator;
if(numeratorLong % denominatorLong == 0)
return to_string(numeratorLong/denominatorLong);
string ans;
if(numeratorLong<0 ^ denominatorLong<0){
ans +="-";
numeratorLong = abs(numeratorLong);
denominatorLong = abs(denominatorLong);
}
ans += to_string(numeratorLong / denominatorLong)+ ".";
string fractionPart;
long remind=numeratorLong % denominatorLong;
unordered_map mp;
int index=0;
while(remind != 0 && !mp.count(remind))
{
mp[remind] = index;
fractionPart += to_string(remind * 10 /denominatorLong);
remind = remind * 10 % denominatorLong;
index++;
}
if(remind!=0)
fractionPart = fractionPart.substr(0,mp[remind])+"("+fractionPart.substr(mp[remind])+")";
ans += fractionPart;
return ans;
}
};