在 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 可能会导致问题?有没有办法解决这样的问题?
在这种情况下,您的字符串将自动编号,但前提是其值是有效的 Perl 数字文字。
1.000+136
应该是1.000E+136
(E
被排除在外(或1.000E136
(+
被E
使用(。