2012年8月31日 星期五

C# double 無條件捨去

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;
}

沒有留言: