示例代码
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中使用,因此格式字符串解决方案最有效)。
答案 0 :(得分:2)
您所询问的内容没有具体的格式规则。如果要有条件地格式化SSRS中列中的值,可以尝试使用如下表达式:
=IIF((Fields!myField.Value - CInt(Fields!myField.Value)) > 0,
Format(Fields!myField.Value, "#,###.#0"),Format(Fields!myField.Value, "#,###"))
答案 1 :(得分:1)
private void DoShow(decimal d)
{
var delim = (d.ToString().Contains('.')) ? "#,###.#0" : "#,###";
MessageBox.Show(d.ToString(delim));
}
这对我来说很好。虽然不是很好,但不是最好的实现。