很久以前,在一些关于古老的 FORTRAN 的书中,我看到声称将整数常量与浮点变量一起使用会比较慢,因为常量需要先转换为浮点形式:
double a = ..;
double b = a*2; // 2 -> 2.0 first
double c = a*2.0;
在现代 C++ 中编写 2.0 而不是 2 是否仍然有益?如果不是,可能应该首选“整数版本”,因为 2.0 更长并且对人类读者没有任何影响。
我处理复杂的长表达式,其中这些“.0”会在性能或可读性方面产生差异(如果适用)。
最佳答案
首先要涵盖其他答案,没有 2
与 2.0
不会导致性能差异,这将在编译时检查以创建正确的值。但是要回答这个问题:
Is it still beneficial to write 2.0 rather than 2 in the modern C++?
绝对。
但这不是因为性能,而是可读性和错误。想象一下以下操作:
double a = (2 / someOtherNumber) * someFloat;
someOtherNumber
的类型是什么?因为如果它是 integer
类型,那么你就会因为整数除法而遇到麻烦。 2.0
或 2.0f
具有明显的优势:
- 准确地告诉代码的读者您的意图。
- 避免出现您不希望出现的整数除法错误。
关于c++ - 假设 a 是 double,2.0*a 比 2*a 快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261457/