2016-09-09 15 views
0

私はしばらくの間システムに取り組んでおり、クライアントはそれをテストしています。彼らは現在、小数点以下2桁を維持してシステムを丸めるようにします。私はMath.Ceilingと問題を抱えているように誰かを助けることができますし、10進数に数値を変換します。私のコードは以下の通りです。10進数に変換し小数点以下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にキャストするだけです。
関連する問題