如何在IPython.display.Markdown输出中控制数字精度/位数
控制Markdown表格中浮点数精度的逐输出方案(结合tabulate与IPython.display.Markdown)
不用全局魔法命令,直接通过tabulate库的原生参数或数据预处理就能实现逐输出的浮点数精度控制,两种方案如下:
方案1:使用tabulate的floatfmt参数
tabulate本身支持通过floatfmt参数指定浮点数格式,格式符规则和f-string一致,可按列单独设置:
from IPython.display import Markdown from tabulate import tabulate table = [["Sun",696000,1989100000], ["Earth",6371,5973.6], ["Moon",1737,73.5], ["Mars",3390,641.85]] # 按列指定格式:前两列用默认格式,第三列保留两位小数 Markdown(tabulate( table, headers=["Planet","R (km)", "mass (x 10^29 kg)"], floatfmt=("", "", ".2f") ))
floatfmt是一个与列数对应的字符串元组,空字符串表示沿用默认格式,需要格式化的列直接传入类似.2f的格式符即可。
方案2:预处理表格数据
如果需要更灵活的格式控制(比如添加单位、特殊格式),可以先手动用f-string格式化数据,再传给tabulate:
from IPython.display import Markdown from tabulate import tabulate table = [["Sun",696000,1989100000], ["Earth",6371,5973.6], ["Moon",1737,73.5], ["Mars",3390,641.85]] # 预处理每一行数据,格式化质量列到两位小数 formatted_table = [ [planet, radius, f"{mass:.2f}"] for planet, radius, mass in table ] Markdown(tabulate( formatted_table, headers=["Planet","R (km)", "mass (x 10^29 kg)"] ))
两种方案都能实现逐输出的精度控制,无需全局设置,根据需求选择即可。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

