我们遇到了一个问题,即在使用.toString()方法后舍入double值,以便在TextBox中显示。
我们需要的是这样的事情:
双倍价值:39621443.8975101998
字符串值:39621443.8975101998
但我们得到的是:
双倍价值:39621443.8975101998
字符串值:39621443.8975102
我们使用Google搜索并尝试了许多方法,但当时没有一种方法可以使用
任何帮助都将受到高度赞赏
答案 0 :(得分:3)
如果您想要具有那么多小数的精确值,您应该使用Decimal
数据类型,其精度高于double
。使用decimal.Parse(str)
。
答案 1 :(得分:1)
正如@PetSerAl指出的那样,这两个值(表示为IEEE 754 double precision floating point number)是相同的。
39621443.8975101998 => 0x4182E49A1F2E19D4
39621443.8975102 => 0x4182E49A1F2E19D4
39621443.897510199800000123456789 => 0x4182E49A1F2E19D4
RoundTrip在这里没有帮助 - 这是双精度的限制。
您需要其他数据类型,例如@magnus建议。