C# 中,關於 double 所有的函式及轉換成字串的方式,皆預設為四捨五入,對想要無條件捨去的是一大困擾。
若要實現無條件捨去,便只能用字串的方式來處理才行。
///
/// 無條件捨去
///
/// double value
/// 小數點後幾位
///
private string RoundDown(double d, int digits)
{
if (d == Double.NaN || d == 0)
return "0";
string s = "";
if (d.ToString().IndexOf(".") != -1)
{
if (digits == 0)
s = d.ToString().Substring(0, d.ToString().IndexOf("."));
else
{
int length = digits + d.ToString().IndexOf(".") + 1;
if (d.ToString().Length < length)
s = d.ToString().PadRight(length, '0');
else
s = d.ToString().Substring(0, digits + d.ToString().IndexOf(".") + 1);
}
}
else
return d.ToString();
return s;
}
沒有留言:
張貼留言