【发布时间】:2015-11-19 13:19:01
【问题描述】:
我的程序中有一个小数点,小数点后可能有尾随零,我想去掉它们。
我希望通过将小数转换为字符串并仅使用基于小数点所在位置以及小数点后的内容是否为零的子字符串来做到这一点。这是我想出的:
string number = Convert.ToString(MyDouble);
if (number.Contains("."))//If there are trailing zeros
{
//If the numbers after the decimal point (when taken as an integer) equal 0
if(Convert.ToInt16(number.Substring(number.IndexOf("."))) == 0)
{
//Remove anything after the decimal point
number = number.Substring(0, number.Length - number.IndexOf("."));
}
}
result = Convert.ToDecimal(number);
但这不起作用。它有什么问题?
【问题讨论】:
-
您可以简单地使用自定义格式说明符来做到这一点(特别是,查看“#”与“0”)msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx
-
我真的不明白这是要完成什么。通常,人们会将数值简单地作为其数字(不是字符串)表示形式存储在内存中。然后在某种 UI 中显示它们时简单地应用一个字符串格式化程序。为什么要进行这次对话?
-
您能否从示例中删除所有不相关的代码并用常量替换值:
number是主要候选者? -
@David 我认为这是字符串操作的练习。显然,应该直接对数字进行舍入/修整(有很多现有的问题)......或者可能是为了显示数字转换为字符串的特定于语言环境的问题......
-
如果链接的副本不涵盖所有情况 - 如果您需要小数点后的特定位数,还有更多详细信息:stackoverflow.com/questions/164926/…