要浮动到整数转换的C#字符串
在C#中将字符串(十进制数)转换为整数的最佳方法是什么?要浮动到整数转换的C#字符串,c#,string,int,type-conversion,C#,String,Int,Type Conversion,在C#中将字符串(十进制数)转换为整数的最佳方法是什么? 在我的例子中,message是一个字符串,其坐标用{x:y}分隔 这对我不起作用(不知道为什么): 消息等于:-5.5707855{x:y}0.8193512{x:y} 坐标系为-55707855(应为-5.5707855) 坐标是8193512(应该是0.8193512)Int不支持小数。您可以使用十进制、浮点或双精度 有几种方法可以转换这些类型 看看这个类。Int数据类型不能包含小数部分。试试这个 var message = "-5.
在我的例子中,message是一个字符串,其坐标用{x:y}分隔 这对我不起作用(不知道为什么): 消息等于:-5.5707855{x:y}0.8193512{x:y}
坐标系为-55707855(应为-5.5707855)
坐标是8193512(应该是0.8193512)Int不支持小数。您可以使用十进制、浮点或双精度 有几种方法可以转换这些类型
看看这个类。Int数据类型不能包含小数部分。试试这个
var message = "-5.5707855{x:y}0.8193512{x:y}";
string[] coordinates = Regex.Split(message, "{x:y}");
var coord_X = float.Parse(coordinates[0]); // or decimal.Parse
var coord_Y = float.Parse(coordinates[1]); // or decimal.Parse
console.WriteLine(coord_X); // -5.5707855
console.WriteLine(coord_Y); // 0.8193512
您正在解析,但未指定
IFormatProvider
(例如CultureInfo)。如果机器的区域设置是这样设置的(例如意大利语、法语等),字符串输入中的点字符可能会被解释为千位分隔符(而不是十进制)。
在这种情况下,Parse
方法将(正确地)返回5500万等,而不是5.5等。。。
为了明确地控制所有这些细节,我建议您使用Parse
的重载:
public static float Parse(
string s,
NumberStyles style,
IFormatProvider provider
)
如果您需要从float
转换为int
,我更喜欢转换而不是强制转换(为了清晰起见):
作为
int
,coord_X
将四舍五入到最接近的整数。使用正则表达式:
string s = "-5.5707855{x:y}0.8193512{x:y}";
MatchCollection matchCollection = Regex.Matches( s, @"(.+?)\{x:y}", RegexOptions.None );
double coord_X = double.Parse( matchCollection[ 0 ].Groups[ 1 ].Value );
double coord_Y = double.Parse( matchCollection[ 1 ].Groups[ 1 ].Value );
Aehm,整数不包含任何小数除以
10.000.000
,不要将它们转换为int
?但我尝试了你的代码坐标X为-5,坐标Y为0。您不需要将其转换为int。
int coord_X = Convert.ToInt32(float.Parse(lines[0]));
string s = "-5.5707855{x:y}0.8193512{x:y}";
MatchCollection matchCollection = Regex.Matches( s, @"(.+?)\{x:y}", RegexOptions.None );
double coord_X = double.Parse( matchCollection[ 0 ].Groups[ 1 ].Value );
double coord_Y = double.Parse( matchCollection[ 1 ].Groups[ 1 ].Value );