c++ - 如何将整数隐式转换为 double ?

标签 c++

int a{5},b{2},c{9};
double d = (double)a / (double)b + (double)c;

或者我可以使用 static_cast。无论哪种方式都是冗长的,尤其是当公式很长时。有更好的解决方案吗?

最佳答案

你可以乘以 1.0:

int a{5}, b{2}, c{9};
double d = 1.0 * a / b + 1.0 * c;

当你处理总和时,你可以加到 0.0:

double d = 0.0 + a - b + c;

大多数编译器会执行优化,以便不评估无意义的操作。仅完成类型转换。


请记住,您只需转换每个除法/乘法组中的第一个成员。以任何看似合理的方式这样做。简单的加法/减法(没有其他类型的乘数/除数)也被转换。编译器保证类型转换。所以你的例子:

double d = (double)a / (double)b + (double)c;

真的可以改写成这样:

double d = (double)a / b + c;
double d = 1.0 * a / b + c;
double d = static_cast<double>(a) / b + c;

更多例子:

double d = (double)a / b + (double)c / d + e;
double d = 1.0 * a / b + 1.0 * c / d + e;
double d = static_cast<double>(a) / b + static_cast<double>(c) / d + e;

关于c++ - 如何将整数隐式转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37777053/

相关文章:

c++ - 在初始化列表之前执行检查

c++ - QTableView打印

c++ - 将 bitset 成员函数 count 的输出放入 vector 中很慢

C++11 内存排序——区别?

c++ - 可以在 C++ 中使用 dynamic_cast 进行向上转换和向下转换

c++ - LibVLC 空图像

c++ - 在方法中初始化对象 - MQL5

c++ - 删除内部析构函数调用

c++ - 依赖倒置和设备独立数据

c++ - 约束和概念的定义顺序 c++20