String 如何使用F#中的printf/sprintf将十进制格式化为具有定义精度的字符串?

String 如何使用F#中的printf/sprintf将十进制格式化为具有定义精度的字符串?,string,f#,format,printf,decimal,String,F#,Format,Printf,Decimal,我想将十进制值格式化为字符串,其定义精度为F#。使用printf/sprintf时,我得到: let sdecimal = sprintf "%.2M" 0.1234M;; val sdecimal:string=“0.1234” 而对于float,它是有效的 let sfloat = sprintf "%.2f" 0.1234;; val sfloat:string=“0.12” 看来我得先把它扔到float上,它既冗长又不洁 有没有比使用C#的.ToString()格式更简单的方法?好的

我想将十进制值格式化为字符串,其定义精度为F#。使用printf/sprintf时,我得到:

let sdecimal = sprintf "%.2M" 0.1234M;;
val sdecimal:string=“0.1234”

而对于float,它是有效的

let sfloat = sprintf "%.2f" 0.1234;;
val sfloat:string=“0.12”

看来我得先把它扔到float上,它既冗长又不洁


有没有比使用C#的.ToString()格式更简单的方法?

好的。如果格式设置为浮动,则此选项有效:

let sfdecimal = sprintf "%.2f" 0.1234M;;
val sfdecimal:string=“0.12”


类型信息仍然保留,正如@在注释中指出的那样。

使用与float相同的格式:
sprintf“%.2f”0.1234M严格来说这不是真的-格式说明符仍然是经过类型检查的,只是映射不是一对一的<代码>%f
匹配任何浮点类型(
Single
Double
Decimal
),但不匹配
int
等。
字符串。格式
忽略类型信息。