【问题标题】:Equivalent Operator to Pythons //?Python 的等价运算符 //?
【发布时间】:2021-05-03 23:44:15
【问题描述】:

我想知道 C++ 中是否有一个运算符与 Python 中的 // 运算符(地板除法)做同样的事情?

【问题讨论】:

  • / 会根据您将结果类型转换为 int
  • 谢谢。那么类型转换为 int 就像一个楼层函数?
  • @Cplusplusbeginner:是的,只要你记得所有的浮点数都是准不可预测的,所以它可能会下降到你预期之外的数字
  • floor 会将浮点数转换为 0,而int 类型转换将完全丢弃浮点数。
  • 您可以使用infix 技术制作x = y /floor/ z;。不过不推荐。我建议将 x = std::floor(y / z); 视为更惯用的 C++。

标签: python c++


【解决方案1】:

在 Python 中

您可以使用int(a/b) 获得与a//b 相同的结果。

基本上// 指的是楼层决策,如果我们通过类型转换将浮点数转换为整数,则完全相同。

您甚至可以导入数学并找到浮点数的底。

import math

math.floor(a/b)

对于 C++

只需将变量与声明为 int 数据类型的结果相除。

int result = a/b;

或者您可以使用楼层操作员

#include <math.h>    
using namespace std;

void main(){
    std::floor(a/b);
}

【讨论】:

  • 添加了c++方案和python方案
  • 对于int result = a/b,如果a/b 不能容纳在int 中怎么办?
  • 如果值太大,我们可以使用long long int数据类型。
  • 这是一个糟糕的答案,很遗憾它被投票赞成,至少在 C++ 部分如此。
【解决方案2】:

如果lhsrhs 是两个整数(shortintunsigned long、...),则lhs / rhs 是这两个值的整数除法的结果。它的类型遵循标准integer promotion

如果lhsrhs 是浮点数,则需要std::floor(lhs / rhs)。替代方案是 std::ceilstd::round

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2022-06-30
    • 2021-10-22
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多