我正在尝试将用户输入格式化为千位分隔符格式。我在这里尝试了代码,但它一直在破坏应用程序:
Amt.Text = String.Format("{0:0,0.00}", Convert.ToDouble(Amt));
因此,当用户输入3566412
时,它需要自动转换为3,566,412
答案 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");