const double dBLEPTable_8_BLKHAR[4096] = {
0.00000000000000000000000000000000,
-0.00000000239150987901837200000000,
-0.00000000956897738824125100000000,
-0.00000002153888378764179400000000,
-0.00000003830892270073604800000000,
-0.00000005988800189093979000000000,
-0.00000008628624126316708500000000,
-0.00000011751498329992671000000000,
-0.00000015358678995269770000000000,
-0.00000019451544774895524000000000,
-0.00000024031597312124120000000000,
-0.00000029100459975062165000000000
}
如果我将上面的 double 更改为 float,我在对数组内容执行操作时是否会产生转换 cpu 周期?还是在编译时整理出“转换”?
比如说,dBLEPTable_8_BLKHAR[1] + dBLEPTable_8_BLKHAR[2]
,像这样简单的东西?
在相关说明中, float 应该能够存储多少位小数?
这是 C++。
最佳答案
任何好的编译器都会在编译时转换初始值设定项。不过,你也问了
am I incurring conversion cpu cycles when I perform operations on the array contents?
这取决于执行操作的代码。如果您的表达式将数组元素与 double
类型的变量组合在一起,则运算将以 double 执行,并且数组元素将在算术发生之前提升(转换)。
如果您只是将数组元素与 float
类型的变量(包括其他数组元素)组合在一起,那么该操作将在 float 上执行并且该语言不需要任何提升(但是如果您的硬件只实现 double 运算,转换可能仍会完成。不过,这样的硬件肯定会使转换成本非常低。)
关于c++ - 我在这里做 double 到 float 的转换吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579798/