本文共 1774 字,大约阅读时间需要 5 分钟。
将分数转换为小数的任务看似简单,但要考虑到所有可能的边界情况,确保结果的准确性和格式的正确性。以下是实现该功能的详细步骤和方法。
给定一个分数的分子和分母,目标是将其转换为小数形式。需要注意以下几点:
处理特殊情况:
处理负数:
进行除法运算:
格式化结果:
public String fractionToDecimals(int numerator, int denominator) { if (numerator == 0) { return "0"; } if (denominator == 0) { throw new IllegalArgumentException(); } StringBuilder stb = new StringBuilder(); boolean isNegative = (numerator < 0) ^ (denominator < 0); if (isNegative) { stb.append("-"); } long dividend = Math.abs((long) numerator); long divisor = Math.abs((long) denominator); long quotient = dividend / divisor; stb.append(quotient); long remainder = dividend % divisor; if (remainder == 0) { return stb.toString(); } stb.append("."); Map map = new HashMap<>(); while (remainder != 0) { if (map.containsKey(remainder)) { stb.insert(map.get(remainder), "("); stb.append(")"); break; } map.put(remainder, stb.length()); remainder *= 10; long temp = remainder / divisor; stb.append(temp); remainder %= divisor; } return stb.toString();} 特殊情况处理:
符号处理:
除法运算:
循环小数处理:
结果格式化:
通过上述方法,可以准确地将分数转换为小数,并处理各种边界情况,确保结果的正确性和格式的美观。
转载地址:http://cqefk.baihongyu.com/