<p>Utilisez les types de données <em>float</em> ou <em>real</em> <strong>uniquement si</strong> la précision fournie par <em>decimal</em> (jusqu’à 38 chiffres) est insuffisante.</p>
<ul>
<li></li>
</ul>
<p>Les types de données numériques approximatifs (voir tableau 3.3) ne stockent pas les valeurs exactes spécifiées <strong>pour de nombreux</strong> nombres ; ils stockent <strong>une approximation extrêmement proche</strong> de la valeur. (<a href="https://technet.microsoft.com/en-us/library/ms187912(v=sql.105).aspx">Technet</a>)</p>
<ul>
<li></li>
</ul>
<p>Évitez d’utiliser des colonnes float ou real dans les conditions de recherche de la clause WHERE, en particulier les opérateurs = et <>. Il est préférable de limiter les colonnes float et real aux comparaisons > ou <. (<a href="https://technet.microsoft.com/en-us/library/ms187912(v=sql.105).aspx">Technet</a>)</p>
<p>Donc en général, choisir Decimal comme type de données est le meilleur choix si :</p>
<ul>
<li>
<p>votre nombre peut y tenir. La précision <em>Decimal</em> est de 10E38 [environ 38 chiffres]</p>
</li>
<li>
<p>l’espace de stockage réduit (et peut-être la vitesse de calcul) de Float n’est pas important pour vous</p>
</li>
<li>
<p>un comportement numérique exact est requis, comme dans les applications financières, dans les opérations impliquant des arrondis, ou dans les vérifications d’égalité. (<a href="https://technet.microsoft.com/en-us/library/ms187912(v=sql.105).aspx">Technet</a>)</p>
</li>
<li>
<p>Types de données numériques <strong>exacts</strong> <a href="https://learn.microsoft.com/sql/t-sql/data-types/decimal-and-numeric-transact-sql">decimal and numeric - MSDN</a></p>
</li>
<li>
<p>numeric = decimal (5 à 17 octets)</p>
</li>
<li>
<p>sera mappé vers Decimal en .NET</p>
</li>
<li>
<p>les deux ont (18, 0) comme paramètres par défaut (précision, échelle) dans SQL Server</p>
</li>
<li>
<p>échelle = nombre maximal de chiffres décimaux pouvant être stockés à droite de la virgule décimale.</p>
</li>
<li>
<p>money (8 octets) et smallmoney (4 octets) sont également des types de données exacts et seront mappés vers Decimal en .NET et ont 4 décimales (<a href="https://learn.microsoft.com/sql/t-sql/data-types/money-and-smallmoney-transact-sql">MSDN</a>)</p>
</li>
<li>
<p>Types de données numériques <strong>approximatifs</strong> <a href="https://learn.microsoft.com/sql/t-sql/data-types/float-and-real-transact-sql">float and real - MSDN</a></p>
</li>
<li>
<p>real (4 octets)</p>
</li>
<li>
<p>sera mappé vers Single en .NET</p>
</li>
<li>
<p>Le synonyme ISO pour real est float(24)</p>
</li>
<li>
<p>float (8 octets)</p>
</li>
<li>
<p>sera mappé vers Double en .NET</p>
</li>
<li>
<p>Tous les types numériques <strong>exacts</strong> produisent toujours le</p>
</li>
</ul>
<p><em>(Réponse tronquée)</em></p>