2011-06-23 13 views
12

en .NET, cuando agrego dos SqlDecimals, así:¿Agregar dos .NET SqlDecimales aumenta la precisión?

SqlDecimal s1 = new SqlDecimal(1); 
SqlDecimal s2 = new SqlDecimal(1); 
SqlDecimal s3 = s1 + s2; 

continuación S3 tiene una precisión 2, mientras tanto S1 y S2 tienen una precisión 1.

Esto parece extraño, sobre todo porque los estados de documentación que el valor de retorno del operador de suma es "Una nueva estructura SqlDecimal cuya propiedad Value contiene la suma". Es decir. de acuerdo con la documentación, la adición no debe cambiar la precisión.

¿Falta algo aquí? ¿Es este comportamiento intencionado?

Saludos,

Tilman

+0

A menudo, por ejemplo, en el caso de agregar dos valores flotantes, el resultado es, por ejemplo, un doble para tener en cuenta el desbordamiento. Entonces, lo que parece extraño no es realmente extraño, tiene mucho sentido, dado el contexto correcto. –

+0

Gracias, después de volver a leer la definición de "precisión", en realidad tiene mucho más sentido ... Por otra parte, ¿no debería la operación de adición tener en cuenta el valor real y solo ajustar la precisión si es necesario? – user812775

Respuesta

4

This article (http://msdn.microsoft.com/en-us/library/ms190476.aspx) explica el comportamiento de los tipos SQL, y asumen el. Los tipos de datos NET Sql reflejan eso en su comportamiento.

+0

Gracias, eso realmente tiene sentido :) – user812775

3

Este es un comportamiento normal.

Precision se define como el número máximo de dígitos utilizados para representar la propiedadValue.

La suma de dos números SqlDecimal que es Precision es igual a 1 es un número que figura en [-10,10]. En cuyo caso, el máximo Precision requerido es 2.

Cuestiones relacionadas