在F#中将float转换为字符串?

时间:2011-01-28 22:36:16

标签: f#

如何在FL#中将float转换为字符串。我正在寻找具有此签名的功能:

float -> string

5 个答案:

答案 0 :(得分:24)

正如其他人所指出的,有一些选择。最简单的两种方法是调用ToString方法并使用string函数。你应该注意两者之间的细微差别。以下是他们在我的系统上所做的事情:

> sprintf "%f" 1.2;;
val it : string = "1.200000"
> string 1.2;;
val it : string = "1.2"
> 1.2.ToString();;
val it : string = "1,2"

前两个是不同的,但两者都有意义,但为什么最后一个返回“1,2”?

那是因为我有捷克语区域设置,其中小数点写为逗号(doh!)因此,string函数使用不变文化,而ToString使用当前文化(线程)。在一些奇怪的文化(如捷克:-)),这可能会导致麻烦!您也可以使用ToString方法明确指定:

> 1.2.ToString(System.Globalization.CultureInfo.InvariantCulture);;
val it : string = "1.2"

因此,方法的选择可能取决于您希望如何使用字符串 - 对于演示文稿,您应该尊重操作系统设置,但是为了生成可移植文件,您可能需要不变的文化。

答案 1 :(得分:14)

> sprintf "%f";;
val it : (float -> string) = <fun:it@8>

答案 2 :(得分:8)

使用'string'功能。

string 6.3f

答案 3 :(得分:3)

string;;
val it : (obj -> string) = <fun:it@1>

答案 4 :(得分:2)

只是为了完善答案:

(fun (x:float) -> x.ToString())

:)