gpt4 book ai didi

c# - switch 样式 C# 构造双范围案例

转载 作者:行者123 更新时间:2023-11-30 13:33:09 24 4
gpt4 key购买 nike

我正在尝试想出最好的方法来对 double 进行某种开关样式选择,以找出它的范围。像这样:

double a = 1.1;
switch(a)
{
case: (0.0, 1.6)
return 1;
case: (1.6, 2.337)
return 2;
case: (2.337, 3.2974)
return 3;
default:
return -1;
}

很明显,在这个例子中,范围内的一个值必须是非包容性的,但你明白我的意思。有什么想法吗?

编辑,范围不一定是整数。

编辑 2:我实际上是在处理弧度并找出一个点在 12 个范围中的哪个范围内。我最终这样做了:

double pi = Math.PI;
double[] zones = new double[] {
0, pi/6, pi/3, pi/2,
2*pi/3, 5*pi/6, pi, 7*pi/6,
4*pi/3, 3*pi/2, 5*pi/3, 11*pi/6
};

for (int i = 0; i < 11; i++)
{
if (radians > zones[i] && radians <= zones[i + 1])
{
return i + 1;
}
}

我开始做一个二分查找类型的 if-else,但它会变得太乱。

最佳答案

以下非常适合相邻范围,因为您只需要写一次范围限制:

double a = 1.1;

if (a < 0.0) {
// Too low
return -1;
} else if (a < 1.6) {
// Range [0.0, 1.6)
return 1;
} else if (a < 2.337) {
// Range [1.6, 2.337)
return 2;
} else if (a < 3.2974) {
// Range [2.337, 3.2974)
return 3;
} else {
// Too high
return -1;
}

关于c# - switch 样式 C# 构造双范围案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519687/

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