昨天改了一个bug,要求是这样的,从数据库里取出来的数字,小数位不一定是多少,但要跟从另一个表中取得的小数位限制一致。
我开始想的是,用string.PadRight和string.Remove,倒是也能实现,但过程比较复杂
1.先判断该字符串有没有小数点,有小数点的情况下,取得小数位数。无小数点时,小数位为0。
2.约定的小数位-小数位数,若为>0,说明当前的字符串少小数位,补0;若为<0,说明当前的字符串小数位多,Remove掉二者之差。
代码写出来比较恶...一个一个的if,看得我心直凉。
今天看到一个办法,用NumberFormatInfo,这个可以指定小数位数(NumberDecimalDigits),但处理完之后,会有类似1,000.01这样的分组,所以需要再指定分组的字符(NumberGroupSeparator)。然后可以把double型,通过tostring来处理,double.ToString("N", NumberFormatInfo)。
如此这般,这般如此,就不用那么多判断,那么多拆箱装箱了。
有关NumberDecimalDigits,MSDN是这么写的:根据区域性定义如何设置数值格式以及如何显示数值。
可以format货币值,数值,百分比值。ToString中的“N”就是指明要处理数值。“P”是处理百分比,“C”是处理货币值。