如何使用 sprintf 格式化整数以将逗号显示为千位分隔符?
我知道如何使用 String.Format 来做到这一点,但我找不到使用 sprintf 的方法。
编辑:根据下面 Fyodor Soikin 的评论,我尝试了以下代码:
printf "%a" (fun writer (value:int) -> writer.Write("{0:#,#}", value)) 10042
let s = sprintf "%a" (fun writer (value:int) -> writer.Write("{0:#,#}", value)) 10042
printf 调用有效(但写入标准输出,而我想获得一个字符串,例如,我可以分配给 WPF 控件的 Text 或 Content 属性)。
sprintf 调用失败并出现错误 FS0039:未定义字段、构造函数或成员“Write”。
如果我能修复这个错误,那么这可能是最直接的解决方案,并且与部分应用程序结合使用时会像内置版本一样简洁。
最佳答案
由于您不能使用 Printf 模块执行此操作,因此我这样做:
/// Calls ToString on the given object, passing in a format-string value.
let inline stringf format (x : ^a) =
(^a : (member ToString : string -> string) (x, format))
然后这样称呼它:
someNumber |> stringf "N0"
关于f# - 如何使用 sprintf 格式化一个以逗号作为千位分隔符的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272674/