(double) C++的功能是什么
What is the function of (double) C++
我是编码方面的新手,所以我的问题可能看起来很无聊。我正在解决一个问题,在建议的解决方案中有一行:
return 4 * (double)nrC / n;
其中 "nrC" 和 "n" 是整数。
这里(double)的作用是什么。它会把 "nrC" 和 "n" 变成双倍吗?
它将 nrC
的值(这就是名称)转换为双精度值。变量本身没有变化。
正如其他人提到的,这是casting,即转换值的类型。
这里使用它的原因是,当只用整数进行除法时(例如4/3
),你会得到整数运算:你输了余数(即 4/3 = 1
(余数 1
丢失))。
这有时是不受欢迎的。因为结果可能会有很大差异,具体取决于您使用的是整数除法还是小数除法:
int nrC = 3;
int n = 2;
int result_i = 4 * (nrC / n); /* 4*(3/2) = 4*1 = 4 !!! */
int result_d = 4 * ((double)nrC/n); /* 4*(3.0/2) = 4*1.5 = 6 !!! */
我是编码方面的新手,所以我的问题可能看起来很无聊。我正在解决一个问题,在建议的解决方案中有一行:
return 4 * (double)nrC / n;
其中 "nrC" 和 "n" 是整数。
这里(double)的作用是什么。它会把 "nrC" 和 "n" 变成双倍吗?
它将 nrC
的值(这就是名称)转换为双精度值。变量本身没有变化。
正如其他人提到的,这是casting,即转换值的类型。
这里使用它的原因是,当只用整数进行除法时(例如4/3
),你会得到整数运算:你输了余数(即 4/3 = 1
(余数 1
丢失))。
这有时是不受欢迎的。因为结果可能会有很大差异,具体取决于您使用的是整数除法还是小数除法:
int nrC = 3;
int n = 2;
int result_i = 4 * (nrC / n); /* 4*(3/2) = 4*1 = 4 !!! */
int result_d = 4 * ((double)nrC/n); /* 4*(3.0/2) = 4*1.5 = 6 !!! */