防止 double.Parse 删除小数点后的尾随零?

问题描述 投票:0回答:4

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

c# double significant-digits
4个回答
4
投票

你的问题毫无意义。双精度数一开始就没有“小数点后的位数”。它们不会在内部存储任何看起来像“数字的十进制表示形式”的东西。事实上,它们不会在内部存储任何看起来像可识别文本的内容。 它报告 4,因为 4.00 正好等于 4。它根据将数字转换为文本的默认规则,将数字“正好四,没有小数部分”显示为文本。

请阅读

。是的,它很长,而且很困难,但是如果没有对本材料的“真正理解”,就不可能“正确”使用浮点数字类型 - 而且无论您使用什么语言都没关系。 double数据类型只是一个数字;它不会跟踪被解析以创建值的字符串。 它的字符串表示仅在调用

.ToString()

2
投票

如果您知道总是想要小数点后两位,则可以在右侧填充零。

跟踪您想要的显示格式不是双精度类型的工作。


0
投票

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


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.