Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/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
String 为什么从字符串到int的转换会产生奇怪的值_String_F#_Int - Fatal编程技术网

String 为什么从字符串到int的转换会产生奇怪的值

String 为什么从字符串到int的转换会产生奇怪的值,string,f#,int,String,F#,Int,我是F#的新手,在查找数字字符串的最后一个元素并将该元素转换为int时遇到困难。因此,如果字符串是“123”,那么我希望返回3。但是,该代码: let s (a : string) = let x = a.[0] int x 当我执行s“123”时,这将返回49。我不明白为什么会这样。另外,当我输入字符串“124”时,它仍然给我49。有人能解释一下为什么会发生这种情况以及我如何解决这个问题吗?a[0]返回a的第一个字符:'1'。将字符强制转换为int将返回其值。您需

我是F#的新手,在查找数字字符串的最后一个元素并将该元素转换为int时遇到困难。因此,如果字符串是“123”,那么我希望返回3。但是,该代码:

  let s (a : string) =
      let x = a.[0]
      int x

当我执行
s“123”
时,这将返回49。我不明白为什么会这样。另外,当我输入字符串“124”时,它仍然给我49。有人能解释一下为什么会发生这种情况以及我如何解决这个问题吗?

a[0]
返回
a
的第一个字符:
'1'
。将字符强制转换为
int
将返回其值。您需要对字符串调用
int

let x = a.Substring(a.Length - 1)
int x

(我在第一行使用了标准的.Net方法;F#标准库也有相同的功能。)

正如您通过索引到字符串中所注意到的,F#将其视为字符数组。
看看:

int“1”基本上是字符“1”的整数值

您可能需要
int“1”
Int32.Parse(“1”)
Int32.TryParse


a.[0]
'1'
,其值为49。如果您想要整个字符串的整数表示,只需执行
int a
@user123082:“是否有类似的内置方法来执行此操作?”这不正是
int
运算符的含义吗?您可以将
int
重命名为
s
让s x=int(x:string)
@user123082做什么的内置方式?@user123082
Int32.TryParse
是做你想做的事情的最佳方式。它返回一个布尔元组(指示解析是否成功)和一个整数(如果解析成功,则保存解析后的值,否则为0)。像使用
let(ok,x)=Int32.TryParse“123”
一样使用它。