f# - 在 F# 中执行 CultureInvariant Double.parse 的更优雅方法

标签 f# locale

我有一个字符串格式的数字数组(例如 [|"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# doublefloat是同一个东西,它们都对应一个 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/

相关文章:

c# - 在 F# 中返回具有名称的元组

PHP音译指定语言环境

java - UTF-8 编码不适用于 Eclipse Java 应用程序

playframework - 在play框架2.x中,如何添加全局 Action /过滤器?

F# 一个扩展方法引用另一个

recursion - F# 递归行为

f# - F# 4.5 中的 byref 返回

enums - F#等效于Enum.TryParse

java - 根据动态货币值动态更改区域设置

Java 覆盖特定语言环境的语言环境设置