C# ternyata memiliki error yang konyol(kalau menurut kita orang Indonesia, mungkin tidak bagi orang Amerika). Jika kita punya nilai 62.5 lalu kita rounding menggunakan Math.Round(62.5,0), maka akan dihasilkan nilai 62, bukan 63. Padahal, pembulatan 0.5 seharusnya dibulatkan ke atas. Bukan ke bawah. Contoh, saya memiliki kode baris perhitungan rasio solar untuk truk sebagai berikut:
decimal dkm = 0;
decimal drasio = 0;
drasio = Convert.ToDecimal(TextBox2.Text);
decimal total = 0;
dkm = Convert.ToDecimal(TextBox1.Text);
total = dkm / drasio;
total = Math.Round(total, 1); //hasilnya = 62.5
total = Math.Round(total, 0); //hasilnya = 62
TextBox3.Text = total.ToString();
Print screen:
Agar pembulatannya sesuai yang diinginkan, saya akhirnya memberikan sedikit trik supaya pembulatan 0.5 bisa dibulatkan ke atas. Triknya sebagai berikut:
decimal dkm = 0;
decimal drasio = 0;
drasio = Convert.ToDecimal(TextBox2.Text);
decimal total = 0;
dkm = Convert.ToDecimal(TextBox1.Text);
total = dkm / drasio;
total = Math.Round(total, 1);
string stotal = total.ToString();
string spalingkanan = "";
if (stotal.Length > 1)
{
spalingkanan = stotal.Substring(stotal.Length - 2, 2);
if (spalingkanan == ".5")
{
total = total + (decimal)0.1;
}
}
total = Math.Round(total, 0);
TextBox3.Text = total.ToString();
print screen:
Semoga bermanfaat.
Referensi: Stackoverflow