如何将整数隐式转换为双精度?

新手上路,请多包涵
int a{5},b{2},c{9};
double d = (double)a / (double)b + (double)c;

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

原文由 Milo Lu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 393
1 个回答

这可行,但您只需要一个 1.0*a 前面

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

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

优先规则和隐式转换将导致所有变量都转换为双精度数。

需要注意的一件事是分组变量,它们需要有自己的 1.0*0.0+ 视情况而定:

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

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

或者,一种使用对关联变量使用静态强制转换。我更喜欢较小的版本,因为 1.0*0.0+ 都尖叫隐式转换为双精度。

 int a{5},b{2},c{9};
double d = a / (static_cast<double>(b) * c);

原文由 doug 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏