如何指定小数位数打印?循环中动态设置小数位数的技术咨询
嘿,我来帮你搞定这两个Python格式化输出的问题,都是日常写代码常碰到的场景,咱们一个个说清楚:
问题1:如何打印指定小数位数的数值?
Python里有好几种灵活的方式实现这个需求,我给你列几个最常用的:
传统%格式化操作符:这是老版本Python常用的写法,语法简单直接
num = 3.1415926 print("保留2位小数:%.2f" % num) # 输出:保留2位小数:3.14这里
%.2f里的2就是你要指定的小数位数,f代表浮点数类型,把数值按这个规则格式化就行。str.format()方法:比%操作符更灵活,支持动态传参
num = 3.1415926 decimal_places = 3 print("保留{}位小数:{:.{}f}".format(decimal_places, num, decimal_places)) # 输出:保留3位小数:3.142字符串里的
:.{}f会把第三个参数(也就是decimal_places)作为小数位数,实现动态指定。f-string(Python 3.6+推荐):现在最流行的写法,简洁又直观
num = 3.1415926 decimal_places = 4 print(f"保留{decimal_places}位小数:{num:.{decimal_places}f}") # 输出:保留4位小数:3.1416直接在字符串里嵌入变量,想改位数只需要调整
decimal_places的值,非常方便。
问题2:在for循环中用循环变量作为小数位数打印结果
先看你给出的代码示例,循环变量i是range(-15, -7),也就是i会取-15、-14...-8这些负数。这里要提一句:当格式化的小数位数参数是负数时,Python会对整数部分进行宽度对齐(默认补空格),而不是处理小数部分哦。
针对你的需求,把固定的16位小数改成用循环变量i控制,有两种简洁的修改方式:
方式1:动态生成%格式化字符串
把原来固定的%.16f改成用循环变量i生成格式串:
for i in range(-15, -7): # 动态生成对应位数的格式字符串 format_pattern = f"%.{i}f" print('Valor do erro:', 10**i, 'Valor da serie:', count, '------->', format_pattern % adder(count))
方式2:用f-string简化代码(推荐)
直接在f-string里嵌入i作为格式化参数,代码更简洁易读:
for i in range(-15, -7): print(f'Valor do erro: {10**i} Valor da serie: {count} -------> {adder(count):.{i}f}')
如果想让整数部分宽度不够时补零(而不是默认的空格),可以把格式写成{adder(count):0.{i}f},这样就会在整数部分前面补零对齐啦。
内容的提问来源于stack exchange,提问作者Pedro Unas
相关产品推荐
相关产品推荐

