F#将字符串转换为float

时间:2011-04-10 19:42:46

标签: f# floating-point type-conversion

我有一个我无法弄清楚的简单问题。我有一个程序,它应该从输入读取一个浮点数。问题是它会变成字符串而我不能为我的生活弄清楚如何将它转换为浮点数(是的,我是一个完整的新词)。

let searchString = args.[0]
let myFloat = hmm hmmm hmmmm

3 个答案:

答案 0 :(得分:15)

conversion in the other way上有一个相关问题。这有点棘手,因为浮点格式取决于当前的OS文化。 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,您可以在其中明确指定文化

答案 1 :(得分:9)

let myFloat = float searchString

这很简单。

答案 2 :(得分:2)

一个side-effect-free parseFloat函数如下所示:

let parseFloat s =
    match System.Double.TryParse(s) with 
    | true, n -> Some n
    | _ -> None

或更短:

let parseFloat s = try Some (float s) with | _ -> None