假設我有兩個(正數)任意十進制數,a和b。計算範圍內的數字
我希望能夠計算a和b之間存在的整數(小於或等於小於b的[有效整數]),使它們都不超過任意數L.一個簡單的方法來做到這一點?我嘗試過循環和地板/天花板,但沒有一個按我想要的方式工作,只會變得混亂。
假設我有兩個(正數)任意十進制數,a和b。計算範圍內的數字
我希望能夠計算a和b之間存在的整數(小於或等於小於b的[有效整數]),使它們都不超過任意數L.一個簡單的方法來做到這一點?我嘗試過循環和地板/天花板,但沒有一個按我想要的方式工作,只會變得混亂。
簡單的情況是:
Count = Math.Min(Math.Max(a, b), L) - Math.Min(a,b);
但是有問題時,L
小於兩a
和b
,並不滿足十進制數。
因此,這給一展身手:
int Count(double firstInput, double secondInput, double limit = int.MaxValue)
{
int minInput = (int)Math.Ceiling(Math.Min(firstInput, secondInput));
int maxInput = (int)Math.Floor(Math.Max(firstInput, secondInput));
int L = (int)Math.Floor(limit);
if (L<minInput)
return 0;
bool maxInputHasDecimals = (maxInput != Math.Max(firstInput, secondInput));
return Math.Min(maxInput, L) - minInput + (maxInputHasDecimals ? 1 : 0);
}
Count(56.67, 67.8); // 11
Count(56.67, 67.8, 62.0); // 6
Count(56.67, 67.8, -3); // 0
Count(-10, -5, -3); // 5
Count(-10, -5, -7); // 3
Count(56.67, 67.0); // 10
對不起,編輯我的初始文章澄清。 a和b可以是浮點數,但範圍內的有效數字必須是整數。 – 2012-02-29 03:23:40
已更新。您的樣本中您的包容性或排他性有點不一致。 – 2012-02-29 03:38:38
以什麼方式? a和b可以是任何東西,只要它們是正數 - 它只是尋找它們之間存在的整數值(只有注意:有效整數可以等於a,如果a是整數本身)。有效整數必須小於或等於L(L將始終爲整數) – 2012-02-29 03:40:59
貴國是否能說明信息? – 2012-02-29 03:08:56
不確定這是什麼意思。但是說a = 56.67和b = 67.8。有效整數= 57到67(11個數字)。但是,如果L = 62或某物,那麼有效整數= 57到62(7個數字)。 – 2012-02-29 03:18:33
或者,它可以是a = 5和b = 10,在這種情況下,有效整數= 5,6,7,8,9,(5個數字)等等。 – 2012-02-29 03:23:02