2010-05-15 81 views
0

我有一個類如何截斷的雙數據類型值變量

public class Score 
{ 
    public double marks { get; set; } 
} 

現在在我的代碼

List<Level1> Obj= new List<Level1>(); 
Score Object= new Score(); 
l1.marks=94.345454; 
Obj.Add(Object) 

//現在消磨添加對象列出我需要trunacte價值 94.34並存儲在列表obj中。 這樣我需要得到輸出有94.34 我該怎麼做。 由於事先
王子

+0

如圖所示,您將收到編譯時錯誤的1級和分數類型不匹配 – 2010-05-15 12:48:09

回答

0

你可以在marks屬性的setter方法做到這一點:

value -= value % 0.01 

這將從value減去0.005454所以離開你用正確的小數點(在這種情況下, 2)

類似:

public class Score { 
    private double m_marks; 

    public double marks { 
     get { return m_marks; } 
     set { m_marks = value - (value % 0.01); } 
    } 
} 
+0

這是怎麼回事,作爲雙擴展方法? – 2010-05-15 12:50:33

2

將值保留爲雙精度值,並且僅將其格式化爲輸出格式。

string output = doubleValue.ToString("F2"); 

​​。舉個例子:

doubleNumber = -1898300.1987; 
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture)); 
// Displays -1898300.2 

Console.WriteLine(doubleNumber.ToString("F3", 
        CultureInfo.CreateSpecificCulture("es-ES"))); 
// Displays -1898300,199 

通知,作爲文化最後的輸出小數逗號設置爲西班牙語。

+0

+1我同意。將數字保持在內部的完全精度,並在輸出上截斷,雖然這取代了截斷。我認爲這也是正確的行爲,但OP要求截斷。看到這個截斷的答案:http://stackoverflow.com/questions/329957/truncate-decimal-number-not-round-off – tvanfosson 2010-05-15 13:05:04

0

你可以使用Math.Round(數字,精度)上msdn