如何输出不带小数点后零的整数格式数值(如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
相关产品推荐
相关产品推荐

