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

如何输出不带小数点后零的整数格式数值(如39.)?

解决方法

首先得明确:Python的原生float类型本身没有39.这种显示形式,默认小数部分为0时要么显示整数(如39)要么显示39.0。要实现**数值类型+显示为39.**的需求,得自定义一个继承自float的类,重写它的显示方法:

class CustomFloat(float):
    def __repr__(self):
        # 判断是否是整数型浮点数,是的话输出x.格式,否则按默认浮点数显示
        return f"{int(self)}." if self.is_integer() else super().__repr__()
    
    def __str__(self):
        return self.__repr__()

使用示例:

n = 39.0
# 转成自定义的数值类型
custom_n = CustomFloat(n)
print(custom_n)  # 输出 39.
print(type(custom_n))  # 输出 <class '__main__.CustomFloat'>,属于float的子类,是数值类型

这个自定义类完全兼容原生float的所有运算:

print(custom_n + 5)  # 输出44.0
print(custom_n * 2)  # 输出78.0

如果你只是需要单次打印的临时效果,也可以用格式化输出,但要注意这时候打印的是字符串,不符合你“数值类型”的要求——而上面的自定义类是真正的数值对象,只是改变了它的显示方式。

之前你尝试的:.0f、直接print(39.)等方法无效,本质是Python对浮点数的默认显示规则就是如此,必须通过自定义类来修改显示逻辑。

内容的提问来源于stack exchange,提问作者Czenra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:56:06