2016-02-12 41 views
0

示例代碼需要特定的十進制格式 - 只能使用格式字符串?

private void DoShow(decimal d) 
    { 
     MessageBox.Show(d.ToString("#,0.##")); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     DoShow(1200m); // A - desired result : "1,200" 
     DoShow(1200.60m); // B - desired result : "1,200.60" 
     DoShow(1200.58m); // C - desired result : "1,200.58" 
     DoShow(120m); // D - desired result : "120" 
    } 

我試圖如圖中的「期望的結果」上方爲十進制值格式化爲字符串。使用的格式代碼讓我接近,但情況B)返回「1,200.6」。

金額是貨幣價值,但我不想美元符號。當美分爲零時,我不想顯示美分。否則,我想顯示2位小數的美分。如果超過999,美元值應該包含逗號。

這是可能的只是格式字符串? (它將用於SSRS,所以格式字符串解決方案最好)。

回答

2

沒有針對您要求的具體格式規則。如果你想在SSRS列有條件的值設置格式,你可以嘗試使用像這樣的表達式:

=IIF((Fields!myField.Value - CInt(Fields!myField.Value)) > 0, 
Format(Fields!myField.Value, "#,###.#0"),Format(Fields!myField.Value, "#,###")) 
1
private void DoShow(decimal d) 
{ 
    var delim = (d.ToString().Contains('.')) ? "#,###.#0" : "#,###"; 
    MessageBox.Show(d.ToString(delim)); 
} 

這對我工作得很好。不是很漂亮,但不是最好的實現。

相關問題