.NET에서 decimal, float 및 double의 차이점은 무엇입니까?


Answers

정밀도가 가장 큰 차이점입니다.

Float - 7 자리 (32 비트)

Double -15-16 자리 (64 비트)

Decimal -28-29 유효 자릿수 (128 비트)

십진수는 훨씬 더 높은 정밀도를 가지며 일반적으로 높은 정확도가 필요한 금융 응용 프로그램 내에서 사용됩니다. 십진수는 double / float보다 훨씬 느립니다 (일부 테스트에서는 20 배까지).

십진수와 부동 소수점 / 복식은 캐스트없이 비교할 수 있지만 부동 소수점 수와 복식 수는 비교할 수 있습니다. 십진수는 또한 인코딩 또는 후미 0을 허용합니다.

float flt = 1F/3;
double dbl = 1D/3;
decimal dcm = 1M/3;
Console.WriteLine("float: {0} double: {1} decimal: {2}", flt, dbl, dcm);

결과 :

float: 0.3333333  
double: 0.333333333333333  
decimal: 0.3333333333333333333333333333
Question

.NET에서 decimal , floatdouble 의 차이점은 무엇입니까?

누군가이 중 하나를 언제 사용합니까?




이들 각각의 주요 차이점은 정밀도입니다.

float32-bit 숫자이고 double64-bit 숫자이고 decimal128-bit 숫자입니다.




부동 ± ~ 1.5 x 10-45 ~ ± 3.4 x 1038 -------- 7 숫자
두 배 ~ ± 5.0 x 10-324 ~ ± 1.7 x 10308 ------ 15 또는 16 자
십진수 ~ ± 1.0 x 10-28 ~ ± 7.9 x 1028 -------- 28 또는 29 자




Decimal, Double 및 Float 변수 유형은 값을 저장하는 방식이 다릅니다. 정밀도는 float가 단 정밀도 (32 비트) 부동 소수점 데이터 유형이고 double이 배정도 (64 비트) 부동 소수점 데이터 유형이고 십진수가 128 비트 부동 소수점 데이터 유형 인 주된 차이점입니다.

플로트 - 32 비트 (7 자리)

더블 - 64 비트 (15-16 자리)

10 진수 - 128 비트 (28-29 자릿수)

더 많은 정보 ... Decimal, Float 및 Double의 차이점




Decimal, Double 및 Float 변수 유형은 값을 저장하는 방식이 다릅니다. 정밀도는 float가 단 정밀도 (32 비트) 부동 소수점 데이터 유형이고 double이 배정도 (64 비트) 부동 소수점 데이터 유형이고 십진수가 128 비트 부동 소수점 데이터 유형 인 주된 차이점입니다.

플로트 - 32 비트 (7 자리)

더블 - 64 비트 (15-16 자리)

10 진수 - 128 비트 (28-29 자릿수)

가장 큰 차이점은 Floats와 Doubles는 2 진 부동 소수점 유형이고 Decimal은 부동 소수점 유형으로 값을 저장합니다. 따라서 Decimals는 훨씬 더 높은 정밀도를 가지며 일반적으로 높은 정확도가 필요한 화폐 (금융) 또는 과학 계산 응용 프로그램 내에서 사용됩니다. 그러나 현명한 성능에서는 십진수가 double 및 float 유형보다 느립니다.

십진수는 십진수 형식의 정밀도 내에서 모든 숫자를 정확하게 나타낼 수 있지만 Float 및 Double은 해당 숫자의 정밀도에 해당하는 짝수 인 모든 숫자를 정확하게 나타낼 수 없습니다.

소수

금융 응용 프로그램이나 과학 계산의 경우 Decimal 유형을 사용하는 것이 더 좋습니다. 왜냐하면 높은 정확성과 반올림 오류를 피하기 쉽기 때문입니다.

더블

이중 유형은 돈을 처리하는 것을 제외하고는 실제 값에 대해 가장 일반적으로 사용되는 데이터 유형입니다.

흙손

처리 능력에 대한 요구가 매우 높아지고 반올림 오류를 견딜 수있는 상황을 사용하기 때문에 대부분 그래픽 라이브러리에서 사용됩니다.




언급 한 정수는 정수입니다. .7, .42, .007과 같은 점을 저장할 수 없습니다. 정수가 아닌 숫자를 저장해야하는 경우 다른 유형의 변수가 필요합니다. double 형 또는 float 형을 사용할 수 있습니다. 이러한 유형의 변수는 정확히 같은 방식으로 설정합니다. int 라는 단어를 사용하는 대신 double 또는 float 를 입력합니다. 이렇게 :

float myFloat;
double myDouble;

( float 은 부동 소수점에 대해 짧으며 끝점에 무언가가있는 숫자를 의미합니다.)

이 둘의 차이점은 보유 할 수있는 숫자의 크기에 있습니다. float 경우 최대 7 자리 숫자를 입력 할 수 있습니다. double 의 경우 최대 16 자리까지 입력 할 수 있습니다. 더 정확하게 말하면 공식 크기는 다음과 같습니다.

float:  1.5 × 10^-45  to 3.4 × 10^38  
double: 5.0 × 10^-324 to 1.7 × 10^308

float 는 32 비트 숫자이고 double 은 64 비트 숫자입니다.

새 단추를 두 번 클릭하면 코드가 표시됩니다. 단추 코드에 다음 세 줄을 추가하십시오.

double myDouble;
myDouble = 0.007;
MessageBox.Show(myDouble.ToString());

프로그램을 중단하고 코딩 창으로 돌아갑니다. 이 행을 변경하십시오.

myDouble = 0.007;
myDouble = 12345678.1234567;

프로그램을 실행하고 이중 버튼을 클릭하십시오. 메시지 상자에 번호가 올바르게 표시됩니다. 끝 부분에 다른 번호를 추가하면 C #이 다시 위아래로 반올림됩니다. 도덕은 정확성을 원한다면 반올림에주의하십시오!







아무도 그것을 언급하지 않았다.

기본 설정에서 Floats (System.Single) 및 double (System.Double)은 오버플로 검사를 사용하지 않지만 Decimal (System.Decimal)은 항상 오버플로 검사를 사용합니다.

내말은

decimal myNumber = decimal.MaxValue;
myNumber += 1;

OverflowException을 던집니다.

그러나 이것들은 :

float myNumber = float.MaxValue;
myNumber += 1;

&

double myNumber = double.MaxValue;
myNumber += 1;



Related