6

使用 double.Parse 时,它​​似乎喜欢从我正在转换的字符串中删除任何尾随(无关紧要的)零。我希望 double.Parse 保留小数点后的位置。例如,这里有一些代码:

tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1]));
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty);

调试器然后写入

将 4.00 转换为 4

所以看起来 double.Parse在这里做了一些可疑的事情。PS MouseSensitivity 也是 double 类型,所以我不能对其进行任何字符串操作。

4

4 回答 4

4

你的问题毫无意义。双打一开始就没有“小数点后的位置”。他们不会在内部存储任何看起来像“数字的十进制表示”的东西。事实上,它们不会在内部存储任何看起来像可识别文本的内容。

它报告 4,因为 4.00 正好等于 4。它根据将数字转换为文本的默认规则将数字“正好四,没有小数部分”显示为文本。

请阅读。是的,它很长,也很困难,但是如果没有真正理解这种材料,就不可能正确使用浮点数字类型——而且你使用什么语言也没有关系。

于 2010-12-11T07:12:25.887 回答
2

double数据类型只是一个数字;它不跟踪被解析以创建值的字符串。它的字符串表示只有在.ToString()被调用时才起作用。

于 2010-12-11T07:00:08.560 回答
0

如果你知道你总是想要小数点后两位,你可以用零右填充。

跟踪所需的显示格式不是 double 类型的工作。

于 2010-12-11T06:55:15.193 回答
0

Double 不存储冗余零。在您的视图或表示层中,您可能希望对其进行格式化以显示您希望它出现,例如 String.Format("{0:#.##}", doubleVariable)

于 2010-12-11T07:00:39.257 回答