F#将字符串转换为浮点
我有一个简单的问题,我还没有弄明白。我有一个程序应该从输入中读取一个浮点。问题是它将以字符串的形式出现,而我一辈子都不知道如何将它转换为浮点(是的,我是一个完全的新手)F#将字符串转换为浮点,f#,floating-point,type-conversion,F#,Floating Point,Type Conversion,我有一个简单的问题,我还没有弄明白。我有一个程序应该从输入中读取一个浮点。问题是它将以字符串的形式出现,而我一辈子都不知道如何将它转换为浮点(是的,我是一个完全的新手) let myFloat=float searchString 就这么简单。上有一个相关的问题。这有点棘手,因为浮点格式取决于当前的操作系统区域性。float函数用于固定区域性格式(类似于“3.14”)中的数字。如果您的float格式与区域性相关(例如在某些国家/地区为“3,14”),则需要使用Single.Parse 例如,在我
let myFloat=float searchString
就这么简单。上有一个相关的问题。这有点棘手,因为浮点格式取决于当前的操作系统区域性。
float
函数用于固定区域性格式(类似于“3.14”)中的数字。如果您的float格式与区域性相关(例如在某些国家/地区为“3,14”),则需要使用Single.Parse
例如,在我的机器上(使用捷克文化设置,使用“3,14”):
如果以相反的方式调用,这两个函数都会引发异常。
Parse
方法还有一个重载,它使用CultureInfo
,您可以在其中明确指定区域性无副作用的parseFloat函数如下所示:
let parseFloat s =
match System.Double.TryParse(s) with
| true, n -> Some n
| _ -> None
甚至更短:
let parseFloat s = try Some (float s) with | _ -> None
要设置代码格式,请在每行前面放置四个空格,或者选择它并按编辑器中的{}
按钮。有关更多格式帮助,请参阅该页。请参阅@Thomas。浮点字符串表示取决于区域性。当它无法解析时会发生什么?@fahadashSystem.FormatException
被抛出。请注意,Single
是float32,要获得浮点,需要使用Double.parse
或其更安全的近亲Double.TryParse
。
let parseFloat s =
match System.Double.TryParse(s) with
| true, n -> Some n
| _ -> None
let parseFloat s = try Some (float s) with | _ -> None