Fortran编译提示表达式中实数缺少指数报错如何解决
错误原因
该报错为Fortran编译器抛出,核心原因是第19行代码括号不匹配,dsqrt函数的左括号没有对应闭合的右括号。
你可以数一下原代码的括号数量:
- 左括号共3个:
dsqrt(、dcmplx(、运算表达式前额外的( - 右括号仅2个:运算表达式末尾的
)(闭合表达式前的()、0.d0)(闭合dcmplx()
编译器扫描到行尾仍未找到合法的语法闭合,误将行尾识别为双精度实数写法的一部分,因此抛出「位置(1)处的实数缺少指数」的错误。
修复方法
直接在该行代码末尾补充1个右括号即可,修改后代码如下:
E = dsqrt(dcmplx((t1*t1 + t2*t2 + 2.d0*t1*t2*dcos(ek) - a*a),0.d0))
也可以删除dcmplx参数内部多余的括号,简化为等价写法:
E = dsqrt(dcmplx(t1*t1 + t2*t2 + 2.d0*t1*t2*dcos(ek) - a*a, 0.d0))
内容的提问来源于stack exchange,提问作者USER 007
相关产品推荐
相关产品推荐

