假设我有两个(正)任意十进制数,a和b。
我希望能够计算a和b之间存在的整数的数量(小于或等于[有效整数],小于b),使得它们都不超过任意数L.是否存在简单的方法吗?我已经尝试过循环和地板/天花板,但没有一个按照我想要的方式工作,而且它只是变得一团糟。
答案 0 :(得分:1)
简单的案例是:
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