防止double.Parse从小数位后删除尾随零?

时间:2010-12-11 06:49:42

标签: c# double significant-digits

当使用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 在这里做了一些可疑的事情。 附: MouseSensitivity也是double类型,所以我不能对它进行任何字符串操作。

4 个答案:

答案 0 :(得分:5)

你的问题毫无意义。双打首先不 “小数点后”。它们不会在内部存储任何看起来像“数字的十进制表示”的东西。实际上,它们不会在内部存储甚至看起来像可识别文本的内容。

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

请阅读this。是的,它很长很难,但是如果没有真正理解这种材料,根本不可能使用浮点数字类型正确 - 它不会无论你正在使用什么语言。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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