我有十进制类型变量,根据它的设置方式,它会在ToString()方法上产生不同的值。如何使ToString()始终返回删除小数点后尾随零的字符串?想要一个好的数字类型的答案,而不是事后的字符串操作。
使用即时Windows(因为它很简单)
?(5.00D).ToString()& “”& CType(“5”,十进制).ToString()& “”& CTYPE( “5.00”,十进制)的ToString()
得出这个:
5 5 5.00
所以这些都是十进制类型,但是根据如何设置,它会以某种方式在ToString()上给出不同的精度。
根据MS文档(http://msdn.microsoft.com/en-us/library/fzeeb5cd(v=vs.110).aspx),空白.ToString()与.ToString(“G”)相同,看起来确实如此。根据MS文档(http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx和http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#GFormatString),格式“G”或“g”是“常规”,并且通常“结果包含小数点(如果需要),小数点后尾随零”被省略。“
是的,我知道我可以格式化为始终给出相同的精度,但我希望它给出“正常”的精度,而不是在小数点后的末尾写下多余的零,同样的,我们通常不会用零填充数字。
我正在使用VB .Net 2008,但我认为这在迄今为止的所有版本中都有。这个问题Odd decimal type behavior for ToString(IFormatProvider)是一个非常类似的问题,但我的情况有点糟糕,所以请不要引用这个问题。