带有科学记数法 EXY 的 python

Posted

技术标签:

【中文标题】带有科学记数法 EXY 的 python【英文标题】:python with scientific notation EXY 【发布时间】:2013-11-13 14:32:38 【问题描述】:

所以我正在将数组的列写入文件,并且该文件将由对空间敏感的程序使用,因此它必须完全正确,如下所示:

*DEFINE_CURVE_TRIM 
$     TCID    TCTYPE      TFLG      TDIR     TCTOL  TOLN/IGB     NSEED 
      1111         1        -1         0     0.001
 7.50000E01 , 0.00000E00
 7.49906E01 , 1.18995E00
 7.49622E01 , 2.37960E00

我正在处理一些带有很多小数的浮点数,所以我将它们四舍五入以具有相同的小数位数,但 python 表示法是 E+01,它必须是 E01

udskrift = open('DEFINE_CURVE_TRIM_FULL','w')
udskrift.write('*DEFINE_CURVE_TRIM\n$     TCID    TCTYPE      TFLG      TDIR     TCTOL  TOLN/IGB     NSEED\n      1111         1        -1         0     0.001\n')
for entry in polar_koordinator:
    udskrift.write(" %.5E , %.5E\n" % (entry[2], entry[3]))

输出是

*DEFINE_CURVE_TRIM
$     TCID    TCTYPE      TFLG      TDIR     TCTOL  TOLN/IGB     NSEED
      1111         1        -1         0     0.001
 8.00976E+01 , 0.00000E+00
 8.01050E+01 , 1.25839E+00

那么关于如何删除“+”使其变为 E01 的任何指针?我不想不得不重新打开文件并删除它们

【问题讨论】:

你还会期待十的负幂的负号吗?例如1.23456E-13? 是的,实际上我并没有考虑太多,但是在查看原件时,我可以找到 E-01 的 2 个示例,所以猜测 LS-dyna 可以接受 【参考方案1】:

一个简单的方法是写

udskrift.write((" %.5E , %.5E\n" % (entry[2], entry[3])).replace('E+', 'E'))

但这似乎并不像pythonic。

【讨论】:

如果我上面的问题的答案是肯定的,这将是我的建议。

以上是关于带有科学记数法 EXY 的 python的主要内容,如果未能解决你的问题,请参考以下文章

将带有科学记数法的 .csv 导入 R 以保留科学记数法?

以科学记数法将带有科学记数法的文本文件读取到 pandas 数据框

在 R 中使用带有 xtable 的科学记数法

JS:将带有尾随零的数字替换为科学记数法

带有 EX、EEX、EXP 或 EE 科学记数法的字符串加倍

Jasper Report 以 CSV 格式导出带有科学计数法的数字