[英]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-DE
, de-AT
, fr-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.