PHP언어 웹개발 서버관리 DB관련 모바일 Mac세상 USA에서 살아남기 블로그
DB관련/SQL Server2019. 9. 26. 03:01


돈의 계산을 이용할때는, decimal을 사용하는 것이 바랍직합니다.

특히 C#에서는 decimal를 꼭 써줘야 합니다. (numeric이 없긴하죠)

화폐 단위는 decimal사용


DB에서는 크게 차이를 못느낄 정도로 많은 차이가 없습니다.




decimal[ (p[ ,s] )] and numeric[ (p[ ,s] )]
Fixed precision and scale numbers. When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1. The ISO synonyms for decimal are dec and dec(p, s). numericis functionally identical to decimal.


p (precision) 정밀도
The maximum total number of decimal digits to be stored. This number includes both the left and the right sides of the decimal point. precision 값은 1에서 ~ 최대 38까지 가능하며, default은 18입니다.


s (scale) 스케일
소수점 오른쪽에 저장된 소수 자릿수 입니다. This number is subtracted from p to determine the maximum number of digits to the left of the decimal point. Scale must be a value from 0 through p, and can only be specified if precision is specified. The default scale is 0 and so 0 <= s <= p. Maximum storage sizes vary, based on the precision.




The following example creates a table using the decimal and numeric data types. Values are inserted into each column. The results are returned by using a SELECT statement.

CREATE TABLE dbo.MyTable  
  MyDecimalColumn decimal(5,2)  
 ,MyNumericColumn numeric(10,5) 

INSERT INTO dbo.MyTable VALUES (123, 12345.12);  

SELECT MyDecimalColumn, MyNumericColumn  
FROM dbo.MyTable;    


MyDecimalColumn                         MyNumericColumn  
--------------------------------------- ---------------------------------------  
123.00                                  12345.12000  
(1 row(s) affected)




C# 숫자형 TYPE들

C#에서 나오는 숫자 타입에 쓸수 있는 타입들: 돈을 사용하는 곳에는 decimal를 꼭 이용해 주세요.

가장 큰 문제는 나눗셈과 같은 경우, 데이터 타입별로 조금씩 차이가 나는 현상이 발생합니다.

Integer Data Types


Type Description Minimum Maximum Bits
bool Boolean flag false true 1
byte Unsigned Byte 0 255 8
sbyte Signed Byte -128 127 8
short Signed Short Integer -32,768 32,767 16
ushort Unsigned Short Integer 0 65,535 16
int Signed Integer -2,147,483,648 2,147,483,647 32
uint Unsigned Integer 0 4,294,967,295 32
long Signed Long Integer -9x1018 9x1018 64
ulong Unsigned Long Integer 0 1.8x1019 64

Non-Integer (Floating Point) Data Types


Type Description Scale Precision Bits
float Single Precision Number ±1.5x10-45 to ±3.4x1038 7 digits 32
double Double Precision Number ±5x10-324 to ±1.7x10308 15 or 16 digits 64
decimal Decimal Number ±10-28 to ±7.9x1028 28 or 29 digits 128



도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)
Posted by saltdoll

댓글을 달아 주세요