돈의 계산을 이용할때는, decimal을 사용하는 것이 바랍직합니다.
특히 C#에서는 decimal를 꼭 써줘야 합니다. (numeric이 없긴하죠)
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.
Examples
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)
);
GO
INSERT INTO dbo.MyTable VALUES (123, 12345.12);
GO
SELECT MyDecimalColumn, MyNumericColumn
FROM dbo.MyTable;
결과
MyDecimalColumn MyNumericColumn
--------------------------------------- ---------------------------------------
123.00 12345.12000
(1 row(s) affected)
C# 숫자형 TYPE들
C#에서 나오는 숫자 타입에 쓸수 있는 타입들: 돈을 사용하는 곳에는 decimal를 꼭 이용해 주세요.
가장 큰 문제는 나눗셈과 같은 경우, 데이터 타입별로 조금씩 차이가 나는 현상이 발생합니다.
http://www.blackwasp.co.uk/CSharpNumericDataTypes.aspx
Integer Data Types
TypeDescriptionMinimumMaximumBits
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
TypeDescriptionScalePrecisionBits
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 |
'DB관련 > SQL Server' 카테고리의 다른 글
[SQL Server] SQL SERVER 에러로그(ERRORLOG) 삭제하기 - 디스크 정리 (0) | 2020.08.01 |
---|---|
[MSSQL] 문자열 바꾸기 (치환) - REPLACE, STUFF, TRANSLATE (group by 에서 사용한 예제 포함) (0) | 2020.02.28 |
(중요) MSSQL mdf log파일로 Detach->Atach 하기 (백업,복원) (0) | 2020.02.28 |
Cannot insert explicit value for identity column in table 'table' when IDENTITY_INSERT is set to OFF. (0) | 2019.10.10 |
[MSSQL] SQL Server Management Studio 로 DB copy하기 (0) | 2019.09.24 |
mssql 에서 sa 로그인 실패 오류 해결방법 (0) | 2019.09.19 |
MSSQL 자동 숫자 증가 필드 autoincrement 설정하기 (2) | 2019.09.11 |
[SQL Server] sqlcmd로 간단한 쿼리 사용하기 (0) | 2019.08.02 |
(로그인하지 않으셔도 가능)