如何在Python中实现十进制小数的反转输出
实现十进制小数反转的Python方案
以下提供3种不同实现思路,均可满足12.789反转后输出987.21的需求:
方案1:字符串反转法(最直观通用)
直接将浮点数转为字符串后整体反转,再转回浮点数即可,代码最简:
def reverse_decimal(n): reversed_str = str(n)[::-1] return float(reversed_str) n = 12.789 print(reverse_decimal(n)) # 输出 987.21
- 优势:逻辑易懂、代码量小,适配绝大多数常规小数场景
- 注意:如果处理极大/极小的浮点数(会默认以科学计数法显示),需要先统一转成普通十进制字符串格式再操作
方案2:自定义浮点类(满足直接print(n)输出的需求)
如果需要保持n = 12.789的赋值形式,执行print(n)直接输出反转结果,可以重写float类的__str__方法:
class ReverseFloat(float): def __str__(self): return str(float(str(self)[::-1])) n = ReverseFloat(12.789) print(n) # 输出 987.21
该类除打印逻辑外,其余运算特性和原生float完全一致,不影响正常数值计算。
方案3:纯数值运算实现(无字符串操作)
如果不想依赖字符串处理逻辑,可以通过数学运算完成反转:
def reverse_decimal_math(n): # 获取小数部分位数 decimal_len = len(str(n).split('.')[1]) # 把浮点数放大为整数 int_num = int(n * (10 ** decimal_len)) # 反转整数 reversed_int = 0 temp = int_num while temp > 0: reversed_int = reversed_int * 10 + temp % 10 temp = temp // 10 # 调整小数点位置得到最终结果 int_part_len = len(str(int(n))) return reversed_int / (10 ** int_part_len) n = 12.789 print(reverse_decimal_math(n)) # 输出 987.21
内容的提问来源于stack exchange,提问作者meti
相关产品推荐
相关产品推荐

