2016-09-09 111 views
0

我一直在系統上工作了一段時間,客戶端一直在測試它。他們希望系統現在四捨五入保留兩位小數。有人可以幫助,因爲我似乎遇到了Math.Ceiling的麻煩,並將數字轉換爲十進制。我的代碼如下。轉換爲十進制並舍入保留2位小數

第2行是需要進行更改的位置,並且數字需要四捨五入以保留2位小數。

float fcharge = Convert.ToSingle(dr["total_charge_weight"]) * Convert.ToSingle(dr["H_unit_rate"]); 
decimal dcharge = Math.Round(Convert.ToDecimal(fcharge), 2); 
float charge = Convert.ToSingle(dcharge); 
+0

你能提供一個輸入和期望輸出數據的例子嗎? – fubo

+0

你的代碼有什麼問題? – user3185569

+0

@fubo輸入將是123.877預期輸出123.90 –

回答

0

不會這樣嗎?

public static float RoundUp(float number, int decimalPlaces) 
{ 
    var scale = Math.Pow(10, decimalPlaces); 
    return (float)(Math.Ceiling(number * scale)/scale); 
} 

需要考慮的事情:

  1. 。你需要roud Math.Round不這樣做。
  2. 沒有必要使用Convert,只需施放。
  3. 有沒有必要轉換爲decimal,當轉換回float;如果需要,則使用隱式轉換爲double,並且只能轉回float