Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要浮动到整数转换的C#字符串_C#_String_Int_Type Conversion - Fatal编程技术网

要浮动到整数转换的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.

在C#中将字符串(十进制数)转换为整数的最佳方法是什么?
在我的例子中,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 );