Asp.net SQL Server 2012的数字表示法

Asp.net SQL Server 2012的数字表示法,asp.net,sql-server,Asp.net,Sql Server,我在SQL Server 2012中有一个表。其中一列为十进制(18,2),用于存储简单的财务数字 在ASP Net程序中,检索行,并根据某些逻辑将某些行相加(使用double类型的变量)。根据结果,执行使用不同循环的逻辑:如果结果等于、大于或小于另一个变量 问题是在某些情况下(没有特别指出这些情况是什么),结果是xxx.00000000000000000000000000000xxx。(也就是说,在第十亿位,有一些数字)。当另一个变量(与之进行比较)为xxx时,这迫使逻辑进入另一个循环 它只在

我在SQL Server 2012中有一个表。其中一列为十进制(18,2),用于存储简单的财务数字

在ASP Net程序中,检索行,并根据某些逻辑将某些行相加(使用double类型的变量)。根据结果,执行使用不同循环的逻辑:如果结果等于、大于或小于另一个变量

问题是在某些情况下(没有特别指出这些情况是什么),结果是xxx.00000000000000000000000000000xxx。(也就是说,在第十亿位,有一些数字)。当另一个变量(与之进行比较)为xxx时,这迫使逻辑进入另一个循环

它只在某些情况下发生,但不确定是什么原因导致它发生。现在,我已经添加了
Math.round
到小数点后2位。但在任何地方进行这种改变都将是一种负担

知道是什么导致了这种行为吗?

浮点数据类型(例如NET double、SQL Server float)是近似值,因为某些值不能完全按照IEEE标准存储。如果需要精确的十进制值,请在.NET代码中使用十进制