我有一个包含两列的Excel文件。一个有名字,另一个有相应的质量。我用相应的行读了一遍,找到了名字的位置。但是,当我试图找到如下所示的相应名称的质量时,它无法将其存储在内存中。在Excel文件中,我的质量值为1.989*10^30。这似乎会影响代码,因为当excel中的单元格只有数值时,相同的代码可以正常工作。
majbod = 'Sun';
minbod = 'Earth';
majbodin = readtable("Major_and_Minor_Bodies.xlsx","Sheet",1);
minbodin = readtable("Major_and_Minor_Bodies.xlsx","Sheet",2);
MAJORBODY = table2array(majbodin(:,"Major_Body"));
MINORBODY = table2array(minbodin(:,"Minor_Body"));
mmaj = table2array(majbodin(:,"Mass"));
mmin = table2array(minbodin(:,"Mass"));
selected_majbody = find(strcmp(MAJORBODY,majbod));
selected_minbody = find(strcmp(MINORBODY,minbod));
M = mmaj(selected_majbody);
m = mmin(selected_minbody);
disp([M ;m])
与我写代码的方式相比,有更好的方法写代码吗?
谢谢。
Excel最好能弄清楚每个单元格中的数据类型。由于您的数据除了数字之外还有其他内容,Excel将其视为字符串。你有几个选择可以绕过这一点:
-
如果你在它前面放一个等号,它会把它当作一个方程来处理,并为你计算1.989*10^3的值。这将是一个数字。
-
由于科学记数法非常普遍,程序员们已经创建了一个表示它的快捷方式。他们经常在你使用"*10^"的地方使用字符"E"。这意味着,如果您键入"1.989E30",excel会将其识别为数字。
-
如果保持当前的字符串格式非常重要,您可能会在提取过程中修改字符串-将"*10^"替换为E,然后无论您使用什么语言,都会有一个可以使用的字符串到数字解析器。
-
如果真正的问题是Excel中的实数太长,您可以始终格式化它们所在的单元格。(右键单击单元格,选择格式化单元格,然后选择科学单元格。(
祝好运