首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TCL将列表中的非科学值转换为科学值。

使用TCL将列表中的非科学值转换为科学值。
EN

Stack Overflow用户
提问于 2020-06-05 03:27:30
回答 2查看 156关注 0票数 0

我有一个包含科学数字和浮点数的值列表,需要将非科学值转换为对列表操作的科学值。

代码语言:javascript
复制
set Y_value [list 1.215647671415354e-7 1.1284486163276597e-6 4.538622670224868e-5 4.4706815970130265e-5 8.492852430208586e-6 6.077577836549608e-6 3.1041158763400745e-6
0.00015045881445985287 4.1016753016265284e-7 1.165599314845167e-6 1.8736355968940188e-6 2.9444883693940938e-5 2.5420340534765273e-5 2.0819682049477706e-6 9.529731869406532e-6
8.549810104341304e-7 1.558014082547743e-5 8.079621693468653e-6 4.868444739258848e-5 0.0001646481396164745]

这是当前列表,我希望将列表的浮动值转换为科学值,并使用TCL将它们存储在新列表中。

预期产出

代码语言:javascript
复制
1.2156476714e-04 1.1284486163e-03 4.5386226702e-02 4.4706815970e-02 8.4928524302e-03 6.0775778365e-03 
3.1041158763e-03 1.5045881446e-01 4.1016753016e-04 1.1655993148e-03 1.8736355969e-03 2.9444883694e-02
2.5420340535e-02 2.0819682049e-03 9.5297318694e-03 8.5498101043e-04 1.5580140825e-02 8.0796216935e-03
4.8684447393e-02 1.6464813962e-01
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-05 04:08:37

注意:示例输出值是输入值的1000倍。例如,输入1.215647671415354e-7变成输出1.2156476714e-04。我将其添加到代码中作为factor

您可以使用tclformat命令来执行此操作,如下所示:

代码语言:javascript
复制
set Y_value [list 1.215647671415354e-7 1.1284486163276597e-6 4.538622670224868e-5 4.4706815970130265e-5 8.492852430208586e-6 6.077577836549608e-6 3.1041158763400745e-6 \
0.00015045881445985287 4.1016753016265284e-7 1.165599314845167e-6 1.8736355968940188e-6 2.9444883693940938e-5 2.5420340534765273e-5 2.0819682049477706e-6 9.529731869406532e-6 \
8.549810104341304e-7 1.558014082547743e-5 8.079621693468653e-6 4.868444739258848e-5 0.0001646481396164745]

set factor 1000
set Y_value_scientific [list]
foreach v $Y_value {
    lappend Y_value_scientific [format %1.10e [expr {$v*$factor}]]
}

puts $Y_value_scientific

注意:如果您使用的是Tcl 8.6或更高版本,我推荐@Shawn使用lmap的一行回答。

票数 2
EN

Stack Overflow用户

发布于 2020-06-05 04:24:34

为了在现有列表的基础上创建一个新的列表,lmap是可行的。

类似于:

代码语言:javascript
复制
set result [lmap y $Y_value { format %.10e [expr {$y * 1000}] }]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62207635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档