如何将浮点数转换为任何浮点数的XE-Y

时间:2019-05-04 13:53:54

标签: python-3.x printing floating-point

我将解析一个文件,其中包含以空格分隔的浮动行,格式为:+/- 0.XXXE-8,在读取浮动内容并将其保存在列表中后,它会更改为+/- X.XXXE-9。

我要做的是将数字打印为+/- 0.XXXE-8(与我阅读的格式相同),但是没有运气。

输入文件中的示例行是:

0.43578E-08  0.48992E-08  0.54452E-08  0.59816E-08  0.64918E-08  0.69577E-08

读取后打印行的输出:

4.357800e-09 4.899200e-09 5.445200e-09 5.981600e-09 6.491800e-09 6.957700e-09

是否有一种方法可以转换任何浮点数以表示为0.XXXE-8,无论该数字是什么,例如:

x = 1.3E-9
print(func(x)) -> 0.13E-8

将感谢您的帮助

谢谢

1 个答案:

答案 0 :(得分:1)

您已经意识到数字在数字上是相同的。

所以这只是一个显示问题,您可以自己格式化它们来解决:

_seekTo(event) {
    var progress = document.getElementById('progress');
    console.log((event.clientX - progress.offsetLeft) / progress.offsetWidth * 100)
}

输出:

data = [0.43578E-08, 0.48992E-08, 0.54452E-08, 0.59816E-08, 0.64918E-08, 0.69577E-08]

def format_float_weirdly(myfloat):
    """Formats a float to 0.xxxxxxxe-08 if it would be presened as x.xxxxxxe-09
    when normally formatted. If not, the normal format is outputted.""" 
    float_String = f"{myfloat:.8n}"
    if float_String[1] == "." and float_String.endswith("e-09"):
        float_String = "0." + float_String.replace(".","").replace("e-09","e-08")
    return float_String


d2 = [format_float_weirdly(f) for f in data]
print(data)
print(d2)

您可以通过对“常规字符串表示形式”进行一些数学和字符串切片来使其适应“其他”形式。 Afaik没有内置的方法可以通过normal string formatting方式“格式化”所需的浮动格式。