繁体   English   中英

如何将字符串转换为十进制?

[英]How to convert string into decimal?

我在文本框中输入一个值:

1212,12

另外,我的文本框中有一个面具:

MaskType=Numeric
EditMask='n2'

我尝试解析它:

var culture = CultureInfo.CreateSpecificCulture("en-US");
var value = decimal.Parse(myTextBox.Text, culture);

但当期望值= 1212.12时获得值= 121212

有什么事吗

en-US分隔小数点后的位置. 而不是,

尝试另一种文化或将myTextBox.Text设置为1212.12

您的文化不匹配:

1212,12

zh-CN

要么使用. 作为小数点分隔符(即1212.12 ),或者使用一种文化, (如de-DEde-ATfr-FR ),但en-US使用. 作为小数点分隔和,作为千位分隔符。

en-US文化将NumberDecimalSeparator用作. 不是,但它具有NumberGroupSeparator作为,

这就是为什么它认为你的,NumberGroupSeparator ,这就是为什么它解析为121212

作为一个解决方案,你可以使用不同IFormatProvider其中有,作为一个NumberDecimalSeparator也可以克隆你en-US与文化CultureInfo.Clone方法 ,并设置它的NumberDecimalSeparator属性,并改变它NumberGroupSeparator财产别的东西。

string s = "1212,12";
var culture = (CultureInfo)CultureInfo.CreateSpecificCulture("en-US").Clone();
culture.NumberFormat.NumberDecimalSeparator = ",";
culture.NumberFormat.NumberGroupSeparator = ".";
decimal value = decimal.Parse(s, culture); // 1212.12

更改分隔符或更改区域性:

对于美国文化分隔符为.

如果要使用分隔符,使用fr-FR文化!

var culture = CultureInfo.CreateSpecificCulture("fr-FR");
var value = decimal.Parse(myTextBox.Text, culture);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM