gpt4 book ai didi

Python-将科学计数法字符串转换为保留小数位的 float

转载 作者:行者123 更新时间:2023-12-01 09:04:41 27 4
gpt4 key购买 nike

我正在使用 python 从文件中读取一些浮点值。读取的值被输入到“Ada”(编程语言)程序。

正在读取的值采用不同的格式(科学数、十进制),我想保留该格式。

除了将“1.0e-5”转换为 float 时,简单的 float() 操作一切正常。

>>float('1.0e-5')
#returns 1e-5

1e-5 在 Ada 程序中使用时给出

error:negative exponent not allowed for integer literal

1.0e-35 适用于 ada 程序。

我知道如果我使用格式我可以获得 1.0e-5

>>>"{:.1E}".format(float('1.0e-5'))
#returns '1.0E-5'

但这会改变其他读取值的格式,因为我的读取/操作功能很常见。

我应该如何解决这个问题?

如果

float('1.0')
#returns 1.0

为什么在将科学记数法字符串转换为 float 时不遵循相同的行为?

(我的读取/操作功能很常见。使用格式化字符串也会改变其他读取值的格式)

最佳答案

您可以使用自定义浮点到字符串转换函数,该函数使用正则表达式检查 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

仅更正第一个值,其他值只是 float 的字符串表示形式,未更改。

关于Python-将科学计数法字符串转换为保留小数位的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com