复制10%优惠码 【96YF71WTUG】
购买优动漫PAINT(CLIP STUDIO PAINT官方中文正版)
详情请戳:https://www.udongman.cn/index.php?m=product&c=csp
本部分主要低啊用的包为decimal,主要起到的作用并非十进制的计算而是保留数字的修约方式,并非保留小数位数,这个其实还是挺重要的,并且可以明确的是,不进行特别设置的话同样采取的是“四舍六入五留双”的机制,做一个如下的实验:
from decimal import Decimal, getcontext a = Decimal.from_float(0.1) print(a) getcontext().prec = 16 print(a*Decimal.from_float(1)) getcontext().prec = 17 print(a*Decimal.from_float(1)) getcontext().prec = 18 print(a*Decimal.from_float(1)) a = Decimal.from_float(0.1534) print(a) getcontext().prec = 16 print(a*Decimal.from_float(1)) getcontext().prec = 17 print(a*Decimal.from_float(1)) getcontext().prec = 18 print(a*Decimal.from_float(1)) a = Decimal.from_float(0.00001534) print(a) getcontext().prec = 16 print(a*Decimal.from_float(1)) getcontext().prec = 17 print(a*Decimal.from_float(1)) getcontext().prec = 18 print(a*Decimal.from_float(1))
0.1000000000000000055511151231257827021181583404541015625 0.1000000000000000 0.10000000000000001 0.100000000000000006 0.1534000000000000085709217501062084920704364776611328125 0.1534000000000000 0.15340000000000001 0.153400000000000009 0.00001533999999999999881879209073787251327303238213062286376953125 0.00001534000000000000 0.000015339999999999999 0.0000153399999999999988
可以看到,有效位数为16位以内的情况下,使用Decimal.from_float还是可以基本保证精度的,getcontext().prec = 为设置有效数字位数。
其他的进位方式的调整可以看官方文档:
l1 = locals() l1['tpl' + str(h)] = DocxTemplate(varF_2.get()) # 打开模板 # 要插入的图片1路径 image1_path = varF_3.get() # 要插入的图片2路径 image2_path = varF_4.get() # 创建2张图片对象 insert_image1 = InlineImage(l1['tpl' + str(h)], image1_path, width=Mm(30)) insert_image2 = InlineImage(l1['tpl' + str(h)], image2_path, width=Mm(30)) if varF_3.get(): countext = { 'number': paramet0[0][0], 'method': paramet0[0][1], 'name': paramet0[0][2], 'workstd_number': paramet0[0][11], 'sample_weight1': paramet0[0][3], 'sample_weight2': paramet0[0][4], 'zero': paramet0[0][5], 'temperature': paramet0[0][9], 'humidity': paramet0[0][10], 'yyyy': paramet0[0][6], 'mm': paramet0[0][7], 'dd': paramet0[0][8], 'img1': insert_image1, 'img2': insert_image2, } # 取出数据组成字典 else: countext = { 'number': paramet0[0][0], 'method': paramet0[0][1], 'name': paramet0[0][2], 'workstd_number': paramet0[0][11], 'sample_weight1': paramet0[0][3], 'sample_weight2': paramet0[0][4], 'zero': paramet0[0][5], 'temperature': paramet0[0][9], 'humidity': paramet0[0][10], 'yyyy': paramet0[0][6], 'mm': paramet0[0][7], 'dd': paramet0[0][8], } for qs in range(1, len(paramet0)): l1['context' + str(qs)] = { 'parameter{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][0]), 'concentration_name{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][1]), 'content_name{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][2]), 'average_name{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][3]), 'revision_name{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][4]), 'RR_name{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][5]), 'concentration1{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][6]), 'concentration2{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][7]), 'content1{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][8]), 'content2{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][9]), 'average{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][10]), 'revision{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][11]), 'RR{b}'.format(b=qs - 1): '{}'.format(paramet0[qs][12]), } countext.update(l1['context' + str(qs)]) # 合并字典 print(countext) l1['tpl' + str(h)].render(countext) # 执行渲染 l1['tpl' + str(h)].save(file_run + '/' + paramet0[0][0] + '.docx') # 另存 document = Document(file_run + '/' + paramet0[0][0] + '.docx') # 读入文件 tables = document.tables # 获取文件中的表格集 table = tables[0] # 获取文件中的第一个表格 num_sum = [num for num in range(18, len(table.rows) - 3) if not table.cell(num, 1).text] # 记录空行位置 print(num_sum) # 删除空行↓ for ed in reversed(num_sum): row = table.rows[ed] row._element.getparent().remove(row._element) # 删除空行结束↑ document.save(file_run + '/' + paramet0[0][0] + '.docx')Copyright © 2022
wuwofcproject.com, All rights reserved
独家内容 未经许可 严禁复制、镜像、转载