답변:
백분율에 소수점 두 자리를 가정 할 때 사용하는 데이터 유형은 백분율 저장 계획에 따라 다릅니다. 분수 등가물 (예 : 100.00 %가 1.0000으로 저장 됨)을 저장하려는 경우 값이 1.0000을 초과하지 않고 (최대 값이라고 가정) 0 미만으로 절대로 내려 가지 않도록 decimal(5,4)
하는 CHECK
제약 조건이 있는 데이터 유형에 데이터를 저장합니다. (바닥이라고 가정). 액면가를 저장하려는 경우 (예 : 100.00 %는 100.00으로 저장 됨) decimal(5,2)
적절한 CHECK
제약 조건 과 함께 사용해야합니다 . 좋은 열 이름과 결합하면 데이터가 무엇인지, 데이터가 열에 저장되는 방식을 다른 개발자에게 명확하게 알 수 있습니다.
decimal(5,2)
2가 소수점 구분 기호 뒤의 자릿수를 나타내는 곳 이어야하지 않습니까?
decimal(5,2)
검사 제약으로 캡처해야하는 것입니다.
decimal(5,4)
로 변경 되었다고 가정합니다 decimal(5,2)
... decimal(5,4)
더 나은 정의 라고 생각 합니다. 즉, 0에서 100이 아닌 소수점 2 자리로 0에서 1을 저장하고 싶습니다. 100; 그래서 100 %는이 방법은 대부분의 경우에 더 의미있게 그 일 1. 100/100 (예 100% * 100% = 100%
,하지가 10000%
; 1 * 1 = 1
).
100.00
:) decimal(5,2)
. 값을 분수 (예 :)로 저장 1.0000
하려면 decimal(5,4)
. 게시물을 업데이트합니다.
decimal
.columnName decimal(precision, scale)
. 정밀도는 숫자에 담을 수있는 총 자릿수를 나타내고, 스케일은 소수점 이하 자릿수를 decimal(3,2)
나타내므로 표현할 수있는 숫자입니다. 으로는 #.##
; decimal(5,3)
될 것이다 ##.###
. decimal
와 numeric
본질적으로 같은 것입니다. 그러나 decimal
ANSI 규격이므로 달리 명시하지 않는 한 항상 사용하십시오 (예 : 회사의 코딩 표준).예제 시나리오
decimal(5,4)
입니다.decimal(3,2)
.예:
if object_id('Demo') is null
create table Demo
(
Id bigint not null identity(1,1) constraint pk_Demo primary key
, Name nvarchar(256) not null constraint uk_Demo unique
, SomePercentValue decimal(3,2) constraint chk_Demo_SomePercentValue check (SomePercentValue between 0 and 1)
, SomePrecisionPercentValue decimal(5,2) constraint chk_Demo_SomePrecisionPercentValue check (SomePrecisionPercentValue between 0 and 1)
)
추가 자료 :
0 to 1
vs 0 to 100
: C # : 저장 비율, 50 또는 0.50?나는 Thomas와 동의하며 적어도 WPF 응용 프로그램에 대해 DECIMAL (5,4) 솔루션을 선택합니다.
이유를 알기 위해 MSDN Numeric Format String을 살펴보십시오. http://msdn.microsoft.com/en-us/library/dwhawy9k#PFormatString
백분율 ( "P") 형식 지정자는 숫자에 100을 곱하고 백분율을 나타내는 문자열로 변환합니다.
그런 다음 XAML 코드에서 이것을 사용할 수 있습니다.
DataFormatString="{}{0:P}"
n이 1.00으로 반올림하기에 충분한 해상도를 갖는 numeric (n, n)을 사용하십시오. 예를 들면 :
declare @discount numeric(9,9)
, @quantity int
select @discount = 0.999999999
, @quantity = 10000
select convert(money, @discount * @quantity)