我有一个我无法弄清楚的简单问题。我有一个程序,它应该从输入读取一个浮点数。问题是它会变成字符串而我不能为我的生活弄清楚如何将它转换为浮点数(是的,我是一个完整的新词)。
let searchString = args.[0]
let myFloat = hmm hmmm hmmmm
答案 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