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

TGP*_*994 6 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);
Run Code Online (Sandbox Code Playgroud)

然后调试器写入

将4.00转换为4

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

Kar*_*tel 5

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

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

请阅读本文.是的,它很长很困难,但是如果没有真正理解这种材料,就不可能正确地使用浮点数字类型- 而且你使用的语言也无关紧要.

  • "比基数2更大的数字"是没有意义的.您表示数字的基础本身并不限制可能数字的范围; 它还取决于您使用的位数/位数.编译器不需要采取任何此类措施.数字是数字 - **与**在文本中的表示形式不同.读入数字时,会有从文本到内部数字格式的转换; 当显示数字时,会转换回文本.这些转换不会相互抵消,一般没有理由期望它们. (2认同)