Note:
模仿高精度除法的过程
1、开个字符串,先判断一下正负,把符号标记上
2、先把整数位置给写上
3、开始循环,当余数不为0的时候,就一直走
4、把当前这个余数对应的位置记录一下,然后乘10 除法 放答案
5、判断新的余数是不是出现过了,如果出现过break否则继续循环
代码如下:
class Solution {
public:
string fractionToDecimal(int numerator, int denominator) {
typedef long long LL;
LL x = numerator, y = denominator;
if(x % y == 0) return to_string(x / y);
unordered_map<LL, int> S;
string ans;
if( (x < 0 && y > 0) || (x > 0 && y < 0)) ans += "-";
x = abs(x), y = abs(y);
ans += to_string(x / y) + '.';
x %= y;
while(x){
S[x] = ans.size();
x *= 10;
ans += to_string(x / y);
x %= y;
if(S.count(x)){
ans = ans.substr(0, S[x]) + "(" + ans.substr(S[x]) + ")";
break;
}
}
return ans;
}
};