2012-04-17 68 views
0
float x = 5; 
Int16 x2 = (Int16)(x * 0.005); 

x2是x的截斷/舍入版本。代表200個單位的塊,如上面的代碼所示。C#高性能四捨五入0

然而上面的代碼產生較大的間隔橫跨0的400代替200

x  x2 intended 
-500 -2 -3 
-300 -1 -2 
-100 0 -1 
100 0 0 
300 1 1 
500 2 2 

-210 -1 -2 
-190 0 -1 
-20 0 -1 
-10 0 -1 
10 0 0 
20 0 0 
190 0 0 
210 1 1 

什麼是這個固定的perfomant方式的間隔?

+0

_「跨0產生更大的間隔」是什麼意思? – gdoron 2012-04-17 23:18:42

+0

請參閱上面的圖表。 – alan2here 2012-04-17 23:19:02

+1

您想要查看x2的數字? – 2012-04-17 23:19:36

回答

4
float x = 5; 
int16 x2 = (Int16)Math.Floor(x * 0.005); 

Math.Floor描述:

返回小於或等於指定的雙精度浮點數的最大整數。

MSDN

1

很難肯定地說,因爲目前還不清楚你想要完成什麼,但我懷疑你想要的是Math.Floor。至少適用於所有數據點。