String 如何使用F#中的printf/sprintf将十进制格式化为具有定义精度的字符串?
我想将十进制值格式化为字符串,其定义精度为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()格式更简单的方法?好的
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
等。字符串。格式
忽略类型信息。