获取整数上限和下限值范围

时间:2013-04-30 16:53:06

标签: c#

我正在编写C#应用程序,我有员工薪水。如何获得26500的工资上限和下限整数在20000到30000之间。 我想找到26500这两个值的上限和下限。如果工资值是1200那么它的上限和下限值将是1000和2000。

3 个答案:

答案 0 :(得分:2)

您可以使用类似以下代码的内容:

        private void button1_Click(object sender, EventArgs e)
        {
            int a = 26500;
            int powerOfTen = (int)Math.Pow(10, NumDigits(a)-1);
            int lowerBound = a - a%powerOfTen;
            int upperBound = (a/powerOfTen + 1) * powerOfTen;
        }
        private int NumDigits(int value)
        {
            int count = 0;
            while (value > 0)
            {
                value /= 10;
                count++;
            }
            return count;
        }

NumDigits方法,如名称所示,将计算所需数字的位数。

答案 1 :(得分:0)

int value = 26500; // Initialise this to whatever value you need.
int range = (int)(0.5 + Math.Pow(10, (int)Math.Log10(value)));
int lower = range*(value/range);
int upper = lower + range;

这适用于:

  1. 使用(int)Math.Log10()计算出最接近10的幂。
  2. 将它与Math.Pow()一起使用并舍入以给出一个10的幂的整数。
  3. 将10的幂除以下的数字除以它,然后将结果的整数部分乘以它,
  4. 鞋面只是10的力量的下限加上。
  5. 请注意,value是一个整数至关重要。

答案 2 :(得分:0)

我无法抗拒......一种不同的“基于字符串”的方法,我相信很多人只会讨厌

int value = 26500;
int lower = Convert.ToInt32(value.ToString().Substring(0, 1) + new String('0', value.ToString().Length - 1));
int upper = lower + Convert.ToInt32("1" + new String('0', value.ToString().Length - 1));

Console.WriteLine(lower.ToString("N0") + " <=  " + value.ToString("N0") + " <= " + upper.ToString("N0"));

奖金:它不会在0(零)上呕吐......