Python里print输出浮点数为什么不加%f

img

img


我发现它时而加%f时而不加,什么时候加?什么时候不加?这是有什么说法吗?

下面是我的理解,供参考:

在第一个图片中,%f 用于字符串格式化,表示输出一个浮点数,语句第二个%表示数据的来源,此种方式多用于需要以特定格式来打印数据时;

第二个图片,print打印数据,不使用%,而用逗号分隔,表示以空格间隔输出各数据项,此种方式多用于输出语句中有不同数据类型时;

至于什么时候加%,什么时候不加,取决于你使用何种类型的输出方式,然后输出方式的语法决定了加%还是不加,格式化字符串时需要加%,而逗号分隔时则不需要加。

测试如下:

参考链接:


https://www.cnblogs.com/fandx/p/9303030.html

https://blog.csdn.net/qq_39965059/article/details/104536222


m=12.57432
print("|%f|"%m)
print("|%8.1f|"%m)
print("|%8.2f|"%m)
print("|%-8.1f|"%m)
print("|%-8.0f|"%m)

math=input("数学成绩:")
chinese=input("语文成绩:")
english=input("英语成绩:")
math=float(math)
chinese=float(chinese)
english=float(english)
sum=math+chinese+english
print("总分:",sum,"平均:",sum/3)

img

意思都是以浮点数的形式展示吧

float() 函数用于将整数和字符串转换成浮点数
通过type可以查看 math变量已经变成float

math = 12
sum = float(math)
print(type(sum))

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7520236
  • 以下回答来自chatgpt:

    回答:

    在Python中,浮点数的打印格式化使用%f,可以控制小数点后的位数。默认情况下,如果直接打印浮点数,则会显示6位小数。这是由于浮点数本身是由二进制数据构成的,而它们在转化为十进制时需要截取到某个位数,因此出现了精度问题。下面举例说明:

    # 直接打印,会显示6位小数
    a = 1.123456789
    print(a)  # 输出:1.123456789
    
    # 使用%f格式化,可以控制小数点后的位数
    print('%.3f' % a)  # 输出:1.123
    
    # 可以使用round函数来四舍五入保留小数位数
    print(round(a, 3)  # 输出:1.123
    

    因此,如果需要精确控制浮点数的小数点后的位数,应该使用%f进行格式化。而在一般情况下,直接打印也是可以的,由于Python默认会显示6位小数,因此只要不需要更多位数,就不需要使用%f。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^