在 C# 文档和教程中,人们使用
##,#
###,#
、##,##
等示例作为数字格式说明符。为什么要使用多个 #
占位符?当在小数点分隔符之前使用时,它似乎与单个 #
字符执行完全相同的操作,并且前面没有 0
占位符。
即
####
==#
##,#
==#,#
###,#
==#,#
##,##
==#,#
使用多个多余的文档示例
#
2147483647 ("##,#", en-US)
-> 2,147,483,647
。
#,#
也是一样的,对吧?Console.WriteLine(large.ToString("##.##"));
// 输出"123456.79"
。
#.##
也是一样的,对吧?format: ##### value: 123
输出:123
。
#
也是一样的,对吧?我错过了什么吗?
# 自定义说明符文档指出,它表示您要将输入值四舍五入到小数点前最接近的数字:
“##”格式字符串导致值四舍五入到小数点前最接近的数字,其中始终使用远离零的四舍五入。例如,使用“##”格式化 34.5 将得到值 35。
然而,这充其量似乎具有误导性。如前所述,
##
对像 1234.56
这样的值将产生 1235
。但是,同一值上的单个 #
将 also 导致 12345
。
的作用是小数点后
#
占位符的数量。例如,在 #.#
上按下 1234.56
将产生 1234.6
,而在相同值上按下 #.##
将产生 1234.56
。我不明白逗号声明 (#
) 的
##
和 #,#
之间有何区别,除非 C# 在进行声明时可以检测到您当前的文化。对于我来说,在美国的英语机器上,我的声明必须采用英语文化(我不能使用 #,#
来表示我想使用小数逗号,即使指定使用小数逗号的区域时也是如此;我需要指定 #.#
和地区/文化,C# 会对其进行转换)。