C标准(以及C ++:[expr.7.1.6]和Fortran)规定:
与类型所要求的精度和范围相比,浮点操作数的值和浮点表达式的结果可以表示得更好;类型不会因此改变。
某些编译器默认情况下对浮点表达式的结果使用更高的精度(GCC,MSVC),而某些编译器则不使用(Clang),但大多数(并非全部)符合标准,并提供了一种控制方法浮点收缩行为。
我编写了很多浮点运算的程序。
是否有关于是否应默认启用收缩的一般建议?还是应该根据具体情况决定?如果是这样,我应该权衡哪些理由支持或反对整个应用程序默认启用收缩?
另一个答案(Is floating point expression contraction allowed in C++?)解释了什么是收缩以及标准规则是什么,但未提供有关如何使用它的建议。我既经历了收缩的一些优点(例如,更快的性能)又遇到了一些缺点(例如,超级难以调试的错误),但是我想知道是否就默认情况下的建议操作达成了社区共识,或者这是否是一个共识。这些应该根据具体情况决定的事情(如果是这样,我应该如何事先决定?)。