在C#中从double转换为字符串而不进行舍入

时间:2015-02-22 14:20:18

标签: c#

我们遇到了一个问题,即在使用.toString()方法后舍入double值,以便在TextBox中显示。

我们需要的是这样的事情:

  

双倍价值:39621443.8975101998

     

字符串值:39621443.8975101998

但我们得到的是:

  

双倍价值:39621443.8975101998

     

字符串值:39621443.8975102

我们使用Google搜索并尝试了许多方法,但当时没有一种方法可以使用

任何帮助都将受到高度赞赏

2 个答案:

答案 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

来源:BinaryConvert.net

RoundTrip在这里没有帮助 - 这是双精度的限制

您需要其他数据类型,例如@magnus建议。