保留toString中的小数位

时间:2013-02-08 08:44:00

标签: c# winforms textbox rounding tostring

有没有办法让'double.toString()'中的结果字符串包含double的确切值?

例如

double d = 123.0   ->   toString() will be "123"

我在使用自定义格式.toString("#.0")时找到了一些解决方案,但如果我想再添加小数位,我就会回到我开始的地方

double d = 123.00   ->  toString("#.0") will be 123.0
double d = 123.0    -> toString("#.00") will be 123.00

我试图这样做的原因是因为我有自定义文本框必须使用与实际显示的值不同的值,并且当尝试在此文本框中输入您自己的值时,文本框忽略您的尝试以小数位数输入零时的文本。因此,我需要toString值等于double的确切值,以便可以正确输入此数字。

谢谢

1 个答案:

答案 0 :(得分:4)

  

有没有办法让'double.toString()'中的结果字符串包含double的确切值?

包含double的确切值 - 但double不存储123,123.0和123.00之间的任何差异。

然而,

decimal存储差异 - 如果你关心的是精确的十进制数字,则更合适。

另一方面,听起来像实际你在错误的地方进行比较:

  

我试图这样做的原因是因为我有自定义文本框必须使用与实际显示的值不同的值,并且当尝试在此文本框中输入您自己的值时,文本框忽略您的尝试以小数位数输入零时的文本。

不要比较字符串值 - 解析值(decimaldouble),然后比较解析后的值。

这也可以防止前导零的问题,其中“0123”和“123”表示相同的值,但是字符串不同。