Fraction to Recurring Decimal

Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

Example 1:

Input: numerator = 1, denominator = 2
Output: "0.5"

Example 2:

Input: numerator = 2, denominator = 1
Output: "2"

Example 3:

Input: numerator = 2, denominator = 3
Output: "0.(6)"

思路:这题核心考点就是后面如何处理循环小数,解决方法就是用hashmap去存分子,只有相同的分子出现的时候,才会出现循环小数,而且注意的是:分子每次都是乘以10,来进行扩充,然后除以分母;

class Solution {
    public String fractionToDecimal(int numerator, int denominator) {
        StringBuilder sb = new StringBuilder();
        if((numerator < 0 && denominator > 0) || (numerator > 0 && denominator < 0)) {
            sb.append("-");
        }
        long num = Math.abs((long) numerator);
        long den = Math.abs((long) denominator);
        
        sb.append(num / den);
        num = num % den;
        if(num == 0) {
            return sb.toString();
        }
        sb.append(".");
        
        // 存分子和sb的length,是为了出现重复,直接做substring, 0.456 123 123 第二个1出现的时候就可以把123括号了;
        //      num,   len;
        HashMap<Long, Integer> hashmap = new HashMap<>();
        while(num > 0) {
            if(!hashmap.containsKey(num)) {
                hashmap.put(num, sb.toString().length());
            } else {
                int index = hashmap.get(num);
                return sb.substring(0, index) + "(" + sb.substring(index) + ")";
            }
            num *= 10;
            sb.append(num / den);
            num = num % den;
        }
        return sb.toString();
    }
}

### Fraction 的定义与应用 Fraction 是编程和数学库中的一个重要概念,通常表示分数形式的数值。它允许开发者精确处理有理数运算而无需担心浮点精度误差。 #### Python 中的 `fractions` 模块 Python 提供了一个内置模块 `fractions` 来支持分数计算。该模块可以创建并操作分数对象,从而实现高精度的算术运算[^4]。 以下是使用 `fractions.Fraction` 类的一个简单例子: ```python from fractions import Fraction # 创建分数实例 f1 = Fraction(3, 4) # 表示 3/4 f2 = Fraction(&#39;0.75&#39;) # 字符串输入也可以解析为分数 f3 = Fraction(0.5) # 浮点数转换成最接近的分数 print(f1 + f2) # 输出: 6/4 或者简化后的 3/2 print(f1 * f3) # 输出: 3/8 ``` 通过这种方式,开发人员能够轻松执行加减乘除以及比较大小的操作,并且不会受到浮点数舍入错误的影响[^4]。 #### 数学领域中的 Fraction 使用场景 在数学中,分数被广泛应用于各种算法设计之中,比如连分数展开、最大公约数求解等问题。利用计算机程序来模拟这些过程时,采用专门的数据结构如 fraction 可以极大地提高准确性[^5]。 例如,在解决 Diophantine 方程或者寻找两个整数之间的最佳逼近比率时,fraction 就显得尤为重要。 #### 调试工具 GDB 下查看内存地址存储值的情况 当涉及到低级语言调试时(如汇编),有时也需要理解如何解释某些寄存器指向的内容作为分数的一部分。例如之前提到过的GDB命令展示了一种特定偏移量处读取到的实际数据可能代表某个逻辑上的分母或分子部分[^3]: (gdb) x/w 0x133008 这行指令展示了从指定位置取出一个字宽度(word size)的数据内容。 --- ### 总结 无论是高级脚本语言还是底层硬件交互层面,掌握好 fraction 的基本原理及其具体实践方法对于提升软件质量和可靠性都有很大帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值