2013-04-30 72 views
0

我正在寫C#應用程序,我有員工薪水。如何得到上限和下限的薪金整數像26500之間20000和30000. 我想找到這兩個值上限和下限爲26500.像這樣,如果薪酬價值是1200,那麼其上限值和下限值將是1000和2000 。獲得整數上限和下限值範圍

回答

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

注意,功率,這是至關重要的value是一個整數。

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,正如其名字所示,將計算所需數量的位數。

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吐(零) ...