【问题标题】:How do I print a float as an integer?如何将浮点数打印为整数?
【发布时间】:2026-01-27 00:25:02
【问题描述】:

这是针对我遇到问题的 Python 课程中的家庭作业。我不允许导入任何东西或使用 try-except。

我想在不使用 min() 函数的情况下获取 3 个数字并打印最小的一个。我遇到的问题是,如果数字类似于 5,它会打印为5.000000,因为我将所有数字都转换为浮点数。我尝试使用rstrip('0') 并将其打印为5.,这是有道理的,但我需要将整数打印为整数并将浮点数打印为浮点数。有没有我想念的更简单的方法来做到这一点?

我的代码供参考:

def min3(num1, num2, num3):
if (num1 <= num2):
    if(num1 <= num3):
        return num1
    else:
        return num3

if (num2 <= num1):
    if(num2 <= num3):
        return num2
    else:
        return num3

def main():
    num1 = float(input("Please enter the first number: "))
    num2 = float(input("Please enter the second number: "))
    num3 = float(input("Please enter the third number: "))

    smallest_num = min3(num1, num2, num3)
    print("The smallest number is %f." %(smallest_num))

main()

【问题讨论】:

  • 如果你真的想要int(input(...)),为什么还要float(input(...))
  • 对不起,我应该澄清一下,用户输入的数字可以是整数或小数。
  • 为什么不只是print("The smallest number is", smallest_num)

标签: python number-formatting


【解决方案1】:

你可以这样做

if smallest_num.is_integer():
   # print as integer
   print "The smallest is %d" % smallest_num
else:
   # print as float
   print "The smallest is %f" % smallest_num

【讨论】:

  • @Erica 实际上 '%s' 用于字符串(或任何其他可以转换为字符串的对象),'%f' 用于浮点数,'%d' 用于整数。见String Formatting Operations