2010-12-06 56 views
2

J'ai une colonne de base de données décimale decimal (26,6).Validation de la décimale en C# pour le stockage dans SQL Server

Pour autant que je peux rassembler cela signifie une précision de 26 et une échelle de 6.

Je pense que cela signifie que le nombre peut être un total de 26 chiffres de longueur et 6 de ces chiffres peuvent être après la décimale.

Dans mon WPF/C# frontend J'ai besoin de valider une décimale entrant pour que je puisse être sûr qu'il peut être stocké dans SQL Server sans troncature, etc.

Donc, ma question est-il un moyen de vérifier que décimal a une précision et une échelle particulières.

En outre, j'ai entendu dire que SQL Server stocke la décimale d'une manière complètement différente de la CLR, est-ce vrai et si c'est quelque chose dont j'ai besoin de s'inquiéter?

+0

Oui, 'decimal (26,6)' signifie: 26 chiffres au total, dont 6 après la décimale (et 20 avant). Est-ce que vos nombres dans l'interface frontale de WPF ** sont vraiment proches de plus de 20 chiffres avant la décimale ?? –

+0

Merci, oui ils pourraient être, nous avons des données qui ont besoin de cette précision. – bplus

Répondre

4

Pour déterminer si une précision donnée, l'échelle du nombre décimal est supérieure à 26,6 serait de vérifier la longueur de son équivalent chaîne. La précision maximale pour le type de données décimal C# semble être de 29 chiffres tandis que la décimale SQL peut avoir 38 chiffres. Vous ne pouvez donc pas atteindre la valeur maximale de la décimale SQL à partir de C#.

1

Si vous connaissez déjà l'échelle de destination et la précision du type décimal au moment de la compilation, effectuez une comparaison simple. Pour décimal (13,5):

public static bool IsValidDecimal13_5(decimal value) 
{ 
    return -99999999.99999M <= value && value <= 99999999.99999M; 
}