La conversion de flotter à la décimale dans SQL Server 2008

J'ai une vue qui doit retourner le type décimal pour les colonnes stockées en tant que float.

Je lance chaque colonne à virgule comme suit:

, CAST(Field1 as decimal) Field1

Le problème avec cette approche est que les décimales par défaut 18,0, qui arrondit automatiquement le flotteur colonnes à 0. Je tiens à garder une précision de jusqu'à 12 décimales.

Cependant, si je fais ceci:

, CAST(Field1 as decimal(12,12)) Field1

J'obtiens une erreur à l'exécution:

"Arithmetic overflow error converting float to data type numeric"

le flotteur colonne est définie comme la longueur: 8 Précision: 53 dans le tableau. Je ne peux pas modifier quoi que ce soit à propos de la table.

Quelle est la bonne manière de le jeter comme séparateur décimal sans perdre la précision décimale?

Ma suggestion est que vous arrêtez de stocker des données comme flotter comme il est inexact de type de données et vous obtiendrez des erreurs d'arrondi si vous effectuez des calculs sur elle.

OriginalL'auteur Sonic Soul | 2010-11-15