防止Double.Parse在十进制之后删除尾随的零?
-
08-10-2019 - |
题
使用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 mousensitivity也是双重型的,因此我不能在上面进行任何字符串操作。
解决方案
您的问题毫无意义。双打没有 有 首先是“十进制之后的地方”。他们不会存储任何看起来像“内部数字的小数表示”的东西。实际上,他们在内部没有任何看起来像可识别的文本的东西。
它报告4,因为4.00完全等于4。它根据其默认规则将数字转换为文本的默认规则,将数字显示为“完全没有分数部分”的数字。
请阅读 这个. 。是的,它很长,很困难,但是根本不可能使用浮点数数字类型 适当地 没有 真正的理解 在这种材料中 - 而且您使用的是什么语言也无关紧要。
其他提示
这 double
数据类型只是一个数字;它不会跟踪被解析以创建值的字符串。它的字符串表示只有在 .ToString()
叫做。
如果您知道小数点之后总是想要两个地方,则可以与零一起填充。
跟踪所需的显示格式不是双重类型的工作。
Double不会存储冗余的零。在您的视图或演示层中,您可能需要格式化它以显示您希望它出现,例如,string.format(“ {0:#。##}”,doublevariable)
不隶属于 StackOverflow