如何格式化小数而不尾随零

我刚才知道小数点会以某种方式记住存储一个数字需要多少trailaing零。 换句话说:它会记住分数的大小。

例如:

123M.ToString() ==> resuls in: 123 123.00M.ToString() ==> resuls in: 123.00 123.450M.ToString() ==> resuls in: 123.450 

我正在寻找一个格式化字符串或另一个技巧来摆脱那些“不需要的”尾随零,但保持有效数字。 所以:

 123M.ToString() ==> resuls in: 123 123.00M.ToString() ==> resuls in: 123 123.450M.ToString() ==> resuls in: 123.45 

删除新字符串末尾的零对我来说不是一个真正的选择,因为那时我必须找出字符串是否包含一个分数,如果是,还必须删除可选的’。’。 或’,’取决于文化等。

有几种方法可以做到这一点,但既然你要转换为String对象,我想你可以尝试这样的事情:

myDecimalVariable.toString("G29");

或者,使用上面的代码,假设您的小数是123.00M

123.00M.toString("G29");

以下是对简洁示例如何工作的解释:

带有数字的G格式表示格式化许多有效数字。 因为29是十进制可以具有的最高有效数字,所以这将有效地截断尾随零而不进行舍入。

只需应用格式说明符零,将删除尾随零:

 string test = (1.23M * 100M).ToString("0"); //prints 123. string test2 = 123.450M.ToString(".00"); //prints 123.45. string test3 = 123.450M.ToString().Trim('0');