手机

密码

安全问题

注册 忘记密码?

详情请戳:https://www.udongman.cn/index.php?m=product&c=csp ​

有效期:2022/03/03 - 2022/08/30
修约转换科学计数法及写入word(docx包) python实现
来源: | 作者:wUw | 发布时间: 835天前 | 2237 次浏览 | 分享到:

一、科学计数法及修约:

本部分有误,更新可见:

https://zhuanlan.zhihu.com/p/533637330

源码内已经注释的很清楚了,

import math  # log10及向上修约  x1 = 1000 x2 = 0.0793 y1 = math.log10(x1 * x2)  # log10对于小数等可以明确返回相关数字。 y01 = math.ceil(abs(math.log10(x1 * x2)))  # math.ceil为向上取整得到小数位数。  if y1 > 0:     # 对于log10正数的情况↓将数字转化为科学计数法,并且执行向上修约     z1 = x1 * x2 / pow(10, y01-1)#转化为整数位只有1位的数字     print(z1)     z2 = "{:.1f}".format(z1)  # 格式化,{:1f},为格式化为小数,保留1位     print(z2)     if float(z1) > float(z2):         #对于修约后进位的情况↓         if len(str(int(z1 + 0.1))) == 2:             z01 = "{:.1f}".format((z1 + 0.1) / 10) + "E+" + str(y01)         else:             z1 = "{:.1f}".format((float(z2) + 0.1))             z01 = z1 + 'E+' + str(y01-1)         #对于进位情况处理结束↑         else:             z01 = z2 + 'E+' + str(y01)                      else:             # 对于log10负数的情况↓             z1 = x1 * x2 * pow(10, y01)             print(z1)             z2 = "{:.1f}".format(z1)             print(z2)             if float(z1) > float(z2):                 if len(str(int(z1+0.1))) == 2 :                     z01 = "{:.1f}".format((z1 + 0.1)/10) + "E-" + str(y01-1)                 else:                     z1 = "{:.1f}".format((float(z2) + 0.1))                     z01 = z1 + 'E-' + str(y01)                 else:                     z01 = z2 + 'E-' + str(y01)                                           print(z01,float(z01))
  • 标题
  • 内容
  • 验证码
提交
标题内容提交时间
没有记录!