C#格式为千分隔符

时间:2015-11-24 09:54:45

标签: c# format

我正在尝试将用户输入格式化为千位分隔符格式。我在这里尝试了代码,但它一直在破坏应用程序:

Amt.Text = String.Format("{0:0,0.00}", Convert.ToDouble(Amt));

因此,当用户输入3566412时,它需要自动转换为3,566,412

2 个答案:

答案 0 :(得分:0)

您正在尝试将控件(名为Amt)转换为double,这是一个坏主意,因为您要转换控件的文本(Amt.Text)。我建议使用decimal,因为它更精确,不会导致浮点问题:

Amt.Text = String.Format("{0:0,0.00}", Convert.ToDecimal(Amt.Text));

要考虑的另一件事是使用可以屏蔽自身的控件,因此您不需要每次都自己替换文本。

答案 1 :(得分:0)

您可能需要查看Standard Numeric Format Strings at MSDN

然后你可以做类似

的事情
listOfPossibleParams.entrySet()
                    .stream()
                    .filter(p -> {
                        Object v = p.getValue();
                        return !(v instanceof String) || !StringUtils.isBlank((String) v);
                    })
                    .collect(toMap(Map.Entry::getKey, Map.Entry::getValue));

将3566412格式化为3,566,412.0

如果你想直接从文本框中取出它,你可以这样做,它会检查在设置文本之前是否可以解析文本

Amt.Text = inputnumber.ToString("N");