加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在Python中将浮点数格式化为最大固定宽度

发布时间:2020-12-20 13:41:48 所属栏目:Python 来源:网络整理
导读:我正在将一个输入文件写入一个源于60年代的程序,它从文本文件的固定宽度数据字段读取数据.格式为: 字段宽度为8个字符 浮点数必须包含’.’或以指数格式书写,例如’1.23e8′ 我最接近的是 print "{0:8.3g}".format(number) 产生’1.23e 06’与1234567,和’12
我正在将一个输入文件写入一个源于60年代的程序,它从文本文件的固定宽度数据字段读取数据.格式为:

>字段宽度为8个字符
>浮点数必须包含’.’或以指数格式书写,例如’1.23e8′

我最接近的是

print "{0:8.3g}".format(number)

产生’1.23e 06’与1234567,和’1234’与1234.

我想调整一下,得到

>’1234567.’使用1234567(即在它之前不会采用指数格式)
需要),
>’1234.’ 1234(即以点结尾,因此不会被解释为整数),
>’1.235e 7’与12345678(即指数仅使用一位数),
>’ – 1.23e 7′,带-1234567(即未违反8位数最大值
负数).

由于这是(据我记得)很容易用Fortran实现的,问题可能偶尔出现,当与遗留代码交互时,我怀疑必须有一些简单的方法来做到这一点?

解决方法

你已经非常接近,但我认为你的最终解决方案将涉及编写自定义格式化程序.例如,我不相信 mini-formatting language可以像你想要的那样控制指数的宽度.

(顺便说一句,在你的第一个例子中,你没有在“e”之后有一个“”,而是在你做的其他人之后.明确你想要哪一个可以帮助其他的回答者.)

如果我正在编写这种格式化函数,我要做的第一件事就是为它编写一套完整的测试. doctest或unittest都适用.

然后,您将处理格式化功能,直到所有这些测试通过.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读