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

Ram*_*amy 12 f#

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

float -> string

Tom*_*cek 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"
Run Code Online (Sandbox Code Playgroud)

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

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

> 1.2.ToString(System.Globalization.CultureInfo.InvariantCulture);;
val it : string = "1.2"
Run Code Online (Sandbox Code Playgroud)

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


Jim*_*mmy 14

> sprintf "%f";;
val it : (float -> string) = <fun:it@8>
Run Code Online (Sandbox Code Playgroud)


Joe*_*ler 8

使用'string'功能.

string 6.3f
Run Code Online (Sandbox Code Playgroud)

  • 另外,你有一个等效的转换函数用于其他基本类型,函数有`int`,`uint32`,`float32`,`byte`,`char`,`decimal`等. (2认同)