为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 将科学记数法字符串转换为保留小数位的浮点数

Python - 将科学记数法字符串转换为保留小数位的浮点数

慕标5832272 2021-06-07 09:08:24
我正在使用 python 从文件中读取一些浮点值。读取的值被输入到“Ada”(编程语言)程序。正在读取的值采用不同的格式(科学、十进制),我想保留该格式。除了将 '1.0e-5' 转换为 float 时,一切都适用于简单的 float() 操作。>>float('1.0e-5')#returns 1e-51e-5 在 Ada 程序中使用时给出error:negative exponent not allowed for integer literal1.0e-35 适用于 ada 程序。我知道如果我使用格式我可以获得 1.0e-5>>>"{:.1E}".format(float('1.0e-5'))#returns '1.0E-5'但这也会更改其他读取值的格式,因为我的读取/操作功能很常见。我应该如何解决这个问题?而如果float('1.0')#returns 1.0为什么在将科学记数法字符串转换为浮点数时不遵循相同的行为?(我的读取/操作功能很常见。使用格式化字符串也会改变其他读取值的格式)
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您可以使用自定义浮点到字符串转换函数,该函数使用正则表达式检查 Ada 是否接受该数字(测试指数字符之前是否只有非点,在这种情况下仅转换为format):


import re


def ada_compliant_float_as_string(f):

    return "{:.1e}".format(f) if re.match("^-?[^\.]e",str(f)) else str(f)


for f in [-1e-5,1e-5,1.4e-5,-12e4,1,1.0]:

    print(ada_compliant_float_as_string(f))

印刷:


-1.0e-05

1.0e-05

1.4e-05

-120000.0

1

1.0

只有第一个值被更正,其他值只是浮点数的字符串表示,不变。


查看完整回答
反对 回复 2021-06-09
  • 1 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信