2013-06-11 29 views
-2

我想知道如何舍入到最接近的100,當值被截斷時。 我用的是這樣的:舍入到最接近的截斷的100

private static int CalculatePaperLevel(int paperLevel) 
{ 
    int roundedLevel = 0; 
    roundedLevel = ((int)Math.Round(paperLevel/10.0) * 10); 
    return roundedLevel; 
} 

但是這是我想要的

E.G. 191 - > 100

224 - > 200

140 - > 100

295 - > 200

+0

http://stackoverflow.com/q/15028144/62576 –

回答

9

你可以只是做roundedLevel = (paperLevel/100) * 100;

這工作,因爲整數運算始終會截斷結果整數。所以

  • (100分之295) - > 2
  • 2 * 100 - > 200
2

這樣截斷是當你在C#中分隔兩個int叫什麼會發生。此代碼你想要做什麼:

private static int CalculatePaperLevel(int paperLevel) 
{ 
    int roundedLevel = paperLevel/100 * 100; 
    return roundedLevel; 
} 
+0

感謝。我不確定什麼是「截斷」,確切地說,這使得更有意義 – user2476322

1

我相信你想要的功能被稱爲Math.Floor

0

只需使用Math.Floor (37D/100)*100

+2

參數'37/100'的類型爲'int'。爲什麼在'int'上使用floor函數? –

+0

@Jeppe它將作爲十進制處理,因爲Floor只接受十進制和雙精度 – Christian

+0

由於超載可以描述爲「int operator /(int,int)'(由C#spec定義,所以不一定會返回int一個真正的.NET方法)顯然是'/'這裏最好的重載。然後,使用'Floor'的超載將很難選擇。這是否編譯? _編輯:_啊,你改了它。 –