gpt4 book ai didi

c++ - static_cast float 到枚举

转载 作者:行者123 更新时间:2023-11-30 03:20:40 26 4
gpt4 key购买 nike

假设我有一个枚举:

enum FRACTION {
WHOLE,
HALF,
THIRD,
QUARTER,
FRACTION_SIZE
};

现在我想取一个分数的浮点分母并转换它,所以我想要:

  • [ 0.5F , 1.5F ) 映射到 WHOLE
  • [ 1.5F , 2.5F ) 映射到 HALF
  • [ 2.5F , 3.5F ) 映射到 THIRD
  • [ 3.5F , 4.5F ) 映射到 QUARTER

给定float foo我不能这样做:

static_cast<FRACTION>(round(foo))

因为我得到错误:

error C2440: static_cast: cannot convert from float to FRACTION

我能做到 2 static_cast小号:static_cast<FRACTION>(static_cast<int>(round(foo)))或者我可以算出一个 map解决方案 lower_bound .但这两个看起来都很丑。是否没有提供更直接的转换?

最佳答案

你想要一个函数来完成它:

FRACTION classifyDenominator(float denominator) {
assert(denominator >= 0.5f && denominator < 4.5f);
denominator -= 0.5f;
return static_cast<FRACTION>(int(denominator));
}

关于c++ - static_cast float 到枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com