四舍五入[c#]

Nav*_*K N 2 c# math double rounding

我在这里有一些奇怪的问题.我有一个数据库表,其中存储了巨大的值.我的应用程序(C#)正在读取此值并保持双精度类型.此应用程序将相同的值插入另一个表.注意:我没有对从第一个表读取的值进行任何计算/处理.它只是用于更新第二个表.

这里的问题是,第二个表的值与第一个表的值略有不同.当我保持双重类型时,看起来数字正在四舍五入.

这是一个值的例子.

原始值:18014398509481984

复制到新表的值:18014398509482000

值看起来不同,但两者在现实中都是相同的.我用18014398509481984 - 18014398509482000作为搜索词进行了谷歌搜索,它返回结果0,这意味着两者都是相同的.

问题:

1 - 如果两者相同,为什么第二个值看起来不同?我可以看到1984年变成了2000年.

2 - 为什么要进行转换?

3 - 如何避免此类转换?

任何帮助都会很棒!

Tim*_*ren 5

尝试使用a System.Decimal来存储第一个表中的值,而不是a System.Double. System.Double似乎没有足够的有效数字来准确地存储那么大的值.