------
## 最终结论
```python
def parse_rational_number(s):
    if '(' in s:
        non_repeating, repeating = s.split('(')
        repeating = repeating[:-1]  # remove the closing parenthesis
    else:
        non_repeating, repeating = s, ''
    
    if '.' in non_repeating:
        integer_part, non_repeating_part = non_repeating.split('.')
    else:
        integer_part, non_repeating_part = non_repeating, ''
    
    return integer_part, non_repeating_part, repeating

def convert_to_decimal(integer_part, non_repeating_part, repeating_part):
    integer_value = int(integer_part) if integer_part else 0
    if not non_repeating_part and not repeating_part:
        return float(integer_value)
    
    decimal_value = float(integer_value)
    
    # Handle the non-repeating part
    if non_repeating_part:
        decimal_value += float('0.' + non_repeating_part)
    
    # Handle the repeating part
    if repeating_part:
        len_non_repeating = len(non_repeating_part)
        len_repeating = len(repeating_part)
        
        # Calculate the value of the repeating part
        repeating_value = float(repeating_part) / (10 ** len_non_repeating) / (1 - (10 ** -len_repeating))
        
        decimal_value += repeating_value
    
    return decimal_value

def is_rational_equal(S: str, T: str) -> bool:
    int_s, non_rep_s, rep_s = parse_rational_number(S)
    int_t, non_rep_t, rep_t = parse_rational_number(T)
    
    value_s = convert_to_decimal(int_s, non_rep_s, rep_s)
    value_t = convert_to_decimal(int_t, non_rep_t, rep_t)
    
    return value_s == value_t

# Example usage
print(is_rational_equal("0.(52)", "0.5(25)"))  # Output: True
print(is_rational_equal("0.1666(6)", "0.166(66)"))  # Output: True
print(is_rational_equal("0.9(9)", "1."))  # Output: True
```