IFORT与IFX编译器(ENx.y)格式输出差异咨询
关于Intel IFX编译器EN格式输出缺少'E'的问题解析
这种输出差异是IFX与IFORT默认行为的区别,但并非BUG,你可以通过编译选项或格式调整来对齐两者的输出:
行为差异原因
Fortran标准中,EN(工程指数格式)允许两种指数表示风格:传统带'E'的格式,以及省略'E'的紧凑格式。IFORT x86默认采用传统风格,而IFX x64默认启用了紧凑指数格式,所以会输出1.234567+06这种不带'E'的结果。对齐IFORT行为的方法
- 编译选项调整:给IFX添加编译选项
-assume old_exponent_format(Linux/macOS环境)或/assume:old_exponent_format(Windows环境),强制IFX使用带'E'的传统指数格式,这样EN0.6格式的输出就会和IFORT一致,得到1.234567E+06。 - 修改格式说明符:如果希望代码跨编译器行为更一致,可以将格式从
(EN0.6)改为(ES0.6)。ES(科学计数格式)在Fortran标准中强制要求输出带'E'的指数部分,无论编译器默认设置如何,都能稳定输出带'E'的结果。
内容的提问来源于stack exchange,提问作者SAL
相关产品推荐
相关产品推荐

