在给定以下规则的情况下,将十进制值转换为字符串的优雅方法是什么?
-
显示小数点前的所有数字 .
-
不变地显示逗号代替小数点 .
-
如果小数点后的部分非零,则仅显示有效数字,但最少为2 .
例子:
decimal string
------------ ----------
500000 500000,
500000.9 500000,90
500000.90 500000,90
500000.900 500000,90
500000.9000 500000,90
500000.99 500000,99
500000.999 500000,999
500000.9999 500000,9999
通过将值转换为 int
,我可以轻松地显示小数点前的部分和逗号 . 但是处理小数点后部分的不同情况变得冗长乏味 .
如果有一种方法可以指定我只想要小数点后面的数字,但是没有小数点,我就会有这个 . 像 String.Format("{0:.00#}", value)
之类的东西,只显示小数点 .
3 回答
这是一个简洁而简单的解决方案(.NET Fiddle):
如果您的值可能包含四位以上的小数位数,则根据需要添加其他
#
个字符 . 格式字符串0.00##########################
(包含28个小数位)将容纳所有可能的decimal
值 .我不会称之为漂亮,但它属于“它有效”的范畴 .
首先是实施,
和示例用法:
输出:
它从现有的
NumberFormatInfo
抓取我们关心的属性,并返回一个带有我们想要的NumberDecimalDigits
的新属性 . 它在丑陋的规模上相当高,但使用很简单 .不知道你想要多么优雅,但这是一种直接的方式来实现你所要求的 .
结果: