2011-07-21 3 views

Répondre

44

Il n'y a pas d'équivalent direct, en ce sens qu'il n'y a pas de types .NET intégrés qui vous permettent de spécifier explicitement la précision/l'échelle autant que je sache. Il n'y a pas de fixe -point de type comme NUMERIC.

decimal et double sont les types communs de points flottais dans .NET, avec la mise en œuvre decimaldecimal floating point (comme dans NUMERIC T-SQL) et la mise en œuvre double comportement binary floating point (comme FLOAT et REAL dans T-SQL). (Il y a float aussi bien, qui est un petit type binaire en virgule flottante.)

Vous devez choisir entre decimal et double basé sur ce que les valeurs que vous allez représenter - je pense en général de « artificiels », les valeurs artificielles (en particulier l'argent) comme étant approprié pour decimal, et les valeurs naturelles continues (telles que les dimensions physiques) sont appropriées pour double.

+1

ces distinctions s'appliquent également aux types de serveur SQL -' numeric'/'decimal' sont des virgules flottantes décimales,' float' et 'real' sont des virgules flottantes binaires, vous devriez donc correspondre comme pour comme. –

+0

@Damien: Merci, va éditer. –

9

Essayez de regarder this site comme guide pour les mappages de types de données. En ce qui concerne la précision et la longueur, vous contrôlez vous-même en utilisant format specifiers

0

Il y a deux réponses selon deux questions:

1) Qu'est-ce quelque chose qui vous permet de spécifier la précision et l'échelle. Rien. Cela semble être votre question, mais juste au cas où:

2) Quel est quelque chose qui vous permet de spécifier un nombre décimal à virgule flottante exactement. C'est en effet le type décimal - mais le point est interne et est réglé sur l'une des 2^32 positions en fonction du nombre entré. Pas sûr pourquoi, mais seulement 28 valeurs fonctionnent, ou 2^5 - 4 ..

Ainsi même si .Net permet à la décimale de ressembler à un flotteur, il est très différent sous les couvertures et correspond à la décimale de SQLServer . Tout ce qui n'est pas une somme de puissance distincte de 2 valeurs est une estimation utilisant le point flottant binaire normal. Cela signifie que même quelque chose comme le numéro 0.1 a déjà perdu sa précision. Mais pas avec le type décimal.

Questions connexes