1

有没有办法让“double.toString()”的结果字符串包含双精度的确切值?

例如

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以便可以正确输入该数字。

谢谢

4

1 回答 1

4

有没有办法让“double.toString()”的结果字符串包含双精度的确切值?

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

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

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

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

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

This will also prevent problems with leading zeroes, where "0123" and "123" represent the same value, but are different strings.

于 2013-02-08T08:45:16.717 回答