You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:36:04