我有一个简单的问题,但一直无法解决。我有一个程序需要从输入中读取浮点数。问题是输入会以字符串形式出现,我无法将其转换为浮点数(是的,我是个完全的新手)。
let searchString = args.[0]
let myFloat = hmm hmmm hmmmm
我有一个简单的问题,但一直无法解决。我有一个程序需要从输入中读取浮点数。问题是输入会以字符串形式出现,我无法将其转换为浮点数(是的,我是个完全的新手)。
let searchString = args.[0]
let myFloat = hmm hmmm hmmmm
在 这个问题的相关回答 中有一个涉及相反转换的问题。但这个问题有一些棘手,因为浮点数格式取决于当前的操作系统区域设置。 float
函数适用于不变文化格式中的数字(如“3.14”)。如果您有特定于文化环境的浮点数格式(例如某些国家/地区中的“3,14”),则需要使用Single.Parse
。
例如,在我的机器上(使用捷克语言设置,它使用“3,14”):
> float "1.1";;
val it : float = 1.1
> System.Single.Parse("1,1");;
val it : float32 = 1.10000002f
两个函数如果以相反的方式调用会抛出异常。Parse
方法还有一个重载,它接受 CultureInfo
参数,您可以在其中明确指定区域设置。
Single
是 float32
类型,如果需要获取一个 float
类型,您需要使用 Double.Parse
或更加安全的 Double.TryParse
。 - Nestor Demeurelet myFloat = float searchString
就这么简单。
System.FormatException
异常。 - Ramon Snirlet parseFloat s =
match System.Double.TryParse(s) with
| true, n -> Some n
| _ -> None
let parseFloat s = try Some (float s) with | _ -> None
{}
按钮。有关更多格式化帮助,请参阅Markdown编辑帮助页面。 - R. Martinho Fernandes