我有一个字符串格式的数字数组(例如 [|"1"; "2"; "3"...|]) 并希望将它们转换为 double ,但是我想以 CultureInvariant 的方式进行。我当然可以这样做:
[|"1"; "2"|] |> Array.map (fun (a) -> Double.Parse(a, CultureInfo.InvariantCulture))
但是,有没有办法做到这一点:
[|"1"; "2"|] |> Array.map Double.Parse
,但是使用 CultureInfo.InvariantCulture 吗?这段代码看起来更具可读性。换句话说,是否有任何方法可以将 CultureInfo.InvariantCulture 在流程中传递给 Double.parse,或者为所有程序/脚本全局设置 CultureInfo.InvariantCulture。
最佳答案
在 F# double
和 float
是同一个东西,它们都对应一个 C# double
.见 this answer .
因此,您可以简单地使用 float
操作符,它处理包括字符串在内的多种类型的转换:
[|"1"; "2"|] |> Array.map float
F# 转换运算符都明智地使用
CultureInfo.InvariantCulture
无需您指定:见 this function来自 float
使用的 F# 源代码运算符(operator)。如果你想使用 C# 兼容的术语,你可以使用
double
运算符,它只是 float
的别名.如果你需要一个 32 位浮点数(C# 浮点数),你可以使用
float32
.
关于f# - 在 F# 中执行 CultureInvariant Double.parse 的更优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38393201/