我試圖想出做某種類型的開關式的選擇上雙的最好的辦法,找出它是在什麼範圍的事情是這樣的:開關式的C#構造帶雙範圍的情況下
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;
}
}
我開始做一個二進制搜索類型如 - 其他的,但它會變得太混亂。
什麼是有多個假設中的問題? – user1096188 2012-03-01 16:13:30
一個明顯的缺陷是,您打算對浮點數字的數字表示進行等式比較。 – GregC 2012-03-01 16:13:35
對於這個例子,你可以使用'Math.Round()':) – 2012-03-01 16:16:04