3 votes

différence entre un type de données monétaire et entier

Quelle est la différence entre le type de données money et bigint dans sql server ?

11voto

Martin Smith Points 174101

Gamme/Précision

bigint La gamme est -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

money La gamme est -922,337,203,685,477.5808 a 922,337,203,685,477.5807

Stockage

Ils prennent tous deux 8 octets de stockage et sont stockés comme de grands nombres entiers. La seule différence est que SQL Server comprend que les 4 chiffres les plus à droite sont après le point décimal.

Si vous le faites

declare @m money = 1.2345
declare @b bigint = 12345

select cast(@m as BINARY(8)), cast(@b as BINARY(8))

Vous voyez, le stockage est le même.

------------------ ------------------
0x0000000000003039 0x0000000000003039

Comportement

Toutefois, le money ne se comporte pas exactement comme si vous utilisiez simplement un type de données bigint vous-même. Calculs avec money sont à éviter mais elles sont toujours plus précises que la division analogique d'un nombre entier.

declare @m money = 1.9999, @m2 money = 1

select @m/@m2 /*Returns 1.9999*/

declare @b bigint = 19999, @b2 bigint = 10000

select @b/@b2 /*Returns 1*/

0voto

Waqas Raja Points 5942

Je pense que c'est assez simple ; bigint ne peut cependant pas contenir de point décimal money peut.

Ejemplo

bigint -------------- argent

44 (correct) ------- 44 (correct) et dans db 44.0000 sera sauvegardé

4.4 (incorrect) ---- 4.4(correct) et dans db 4.4000 sera sauvegardé

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X