在OpenSuse 42.3上运行的Perl脚本给出了错误:参数“1.000 + 136”在printf中不是数字。该脚本读取许多指数形式的数字并将它们写入新文件。这是脚本在具有数百个数字的文件中抱怨的唯一数字。该文件具有以下格式:
23. OH+HO2=H2O+O2
2.510E+12 2.000 40000.000
Declared duplicate reaction...
24. OH+HO2=H2O+O2
1.000+136 -40.000 34800.000
Declared duplicate reaction...
25. H2O2+H=HO2+H2
6.050E+06 2.000 5200.000
用于打印到文件的print语句是:
printf Outfile "\{ a = %.3E n = %5.3f E = %7.3f ",$kA[$ireac],$kb[$ireac],$kE[$ireac];
该数字的指数为136可能会导致问题吗?有没有办法解决这样的问题?
答案 0 :(得分:2)
在这种情况下,您的字符串将自动编号,但前提是它的值是有效的Perl numeric literal。
1.000+136
应为1.000E+136
(E
被遗漏)或1.000E136
(+
使用了E
的内容。