【
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。
如果小数部分为循环小数,则将循环的部分括在括号内。
示例 1:
输入: numerator = 1, denominator = 2
输出: "0.5"
示例 2:
输入: numerator = 2, denominator = 1
输出: "2"
示例 3:
输入: numerator = 2, denominator = 3
输出: "0.(6)"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fraction-to-recurring-decimal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
】
这道题隐藏了太多细节,稍不注意就容易出问题。
考虑负数不好处理,所以除数与被除数都转成整数处理。这里用abs会出问题,比如abs(-2147483648),所以用的 0 - 负数 得出正数。
0 - 负数在遇到-2147483648时,如果用int类型保存,还是会溢出,所以得用 long long 类型。
然后输出小数,到底多少位呢?如何申请内存?如果算出一个小数位,就动态增加一个内存,太麻烦,其实可以直接malloc一个1024大小的字符串数组,记得初始化就行。
接着就是灵活运用sprintf,比如说要添加负号,要添加括号等等。
然后要