Perl - 大指数会导致错误:参数“XXX”在printf

时间:2018-01-24 22:19:40

标签: perl

在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可能会导致问题吗?有没有办法解决这样的问题?

1 个答案:

答案 0 :(得分:2)

在这种情况下,您的字符串将自动编号,但前提是它的值是有效的Perl numeric literal

1.000+136应为1.000E+136E被遗漏)或1.000E136+使用了E的内容。