Il semble donc que si vous
CAST(field1 as decimal) field1
cela ajoutera automatiquement l'arrondi.
L'original est défini comme suit:
type de field1: float longueur: 8 prec: 53
Je dois le convertir en décimal, car ma couche Entity Framework doit générer ce champ sous forme décimale (au lieu de double).
Existe-t-il un moyen de le convertir en décimal, afin de préserver la précision initiale et d'éviter les arrondis?
Je voudrais éviter de devoir déclarer la précision du casting, car:
As-tu essayé:
SELECT Cast( 2.555 as decimal(53,8))
Cela retournerait 2.55500000
. Est-ce que c'est ce que tu veux?
PDATE:
Apparemment, vous pouvez également utiliser SQL_VARIANT_PROPERTY pour trouver la précision et l’échelle d’une valeur. Exemple:
SELECT SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Precision'),
SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Scale')
résultats 8|7
Vous pourrez peut-être utiliser cela dans votre processus de conversion ...
Essayez SELECT CAST(field1 AS DECIMAL(10,2)) field1
et remplacez 10,2
avec la précision dont vous avez besoin.
cast (field1 as decimal(53,8)
) field 1
La valeur par défaut est: decimal (18,0)