VEXcode Pro V5에서 Float 및 Double 변수 생성

소수점 이하 자릿수를 포함하는 유형 – float, double

이러한 데이터 유형을 종종 부동 소수점 데이터 유형이라고 합니다. 숫자는 부동 소수점 숫자라고 합니다.

float fvar = 50.15;
이중 dvar = 50.0;

부동 소수점 데이터 유형 비교 – float 및 double

float와 double 데이터 유형의 차이점은 모두 소수점 이하 자릿수의 정밀도에 관한 것입니다.

VexOS – ARM 7 사양에 따라 float는 6개 또는 7개 위치를 처리할 수 있고 double은 15개 또는 16개 위치를 처리할 수 있습니다.

float: 현재 V5os에서는 컨트롤러가 소수점 이하 8자리까지의 정밀도를 허용하는 것으로 보입니다.

예를 들어

float fvar1 = 1.12345670;
부동 fvar2 = 1.12345678;

fval1은 fvar2와 다릅니다.

float fvar1 = 1.123456780; 
부동 fvar2 = 1.123456781;

fval1은 fvar2와 동일하게 평가됩니다.

double: 소수점 이하 17자리까지의 정밀도를 허용합니다.

예를 들어

이중 dvar1 = 1.12345678912345678;
이중 dvar2 = 1.12345678912345670;

dval1은 dvar2와 다릅니다.

이중 dvar1 = 1.123456789123456789;
이중 dvar2 = 1.123456789123456780;

dval1은 dvar2와 동일하게 평가됩니다.


높은 정밀도가 필요한 경우가 아니면 "double"을 사용하지 마십시오.

높은 정밀도가 필요하지 않은 경우 "double"을 사용하지 말아야 하는 두 가지 이유가 있습니다.

  1. 2X 플로트 유형을 사용합니다.
  2. 훨씬 더 높은 처리 능력을 차지합니다.

VexOS – ARM 7 사양에 따라 float는 6자리 또는 7자리를 처리할 수 있고 double은 15자리 또는 16자리를 처리할 수 있습니다. 두 경우 모두, double 또는 float의 마지막 숫자의 정확성에 의존해서는 안 됩니다. "부동 소수점 계산"(이 기사의 범위를 벗어남)으로 인해 "int"를 저장하는 것과는 매우 다르게 저장됩니다.

따라서 소수점 이하 몇 자리의 정확도가 떨어질 수 있습니다.

double에 대한 연산은 float에 비해 상당히 비용이 많이 들고, 부동 소수점 계산이라 불리는 것으로 인해 "정수"보다 훨씬 높습니다.

IEEE 표준에 따르면 다음은 보다 신뢰할 수 있는 범위 내에 있습니다.

유형 가장 작은 양수 값 최대 양수 값 정밀도 #
뜨다 10 -38 x 1.17549 10 38 x 3.40282 6자리
더블 10 -308 또는 2.22507 10 308 x 1.79769 15자리

기본 데이터 유형을 교환할 수 있습니까? - 캐스팅

데이터 유형을 교환할 수 있습니다. 이 기술을 '캐스팅'이라고 합니다. 캐스팅은 일반적인 방법이지만 필요한 경우에만 수행하십시오. 

가장 일반적인 방법 중 하나는 char와 int를 교환하는 것입니다.

이는 둘 다 한 가지 예외를 제외하고 정수 값을 나타내기 때문입니다. 

  • "int"에는 4바이트(또는 일부 컴파일러에서는 8바이트)가 포함됩니다.
  • "char"에는 1바이트만 포함됩니다.

예를 들어

char aVal = 100;
int iVal = aVal; // 암시적 캐스팅

또는

int iVal = (char) aVal; // 명시적 캐스팅.

암시적 잘림에 대한 주의 사항:

예를 들어

코드니펫3.png

또 다른 일반적인 관행은 int와 float를 교환하는 것입니다.
float fVal = 5.486;
부동 소수점 = fVal - (int)fVal; // 그렇습니다: 5.486 - 5

암시적 잘림에 대한 주의 사항:

예를 들어

int iVal = 50;
float fVal = iVal / 100;

이제 fVal = 0.0, 0.5가 아닙니다.

일부 시나리오에서는 종종 작업의 중요한 부분인 암시적 잘림을 활용하는 것이 좋습니다. 그러나 의도적으로 이 기술을 사용하고 있는지 확인해야 합니다.

암시적 잘림이 발생하지 않도록 하려면 명시적 캐스팅을 수행해야 합니다.

  • 암시적 캐스팅: float fVal = iVal / 100.0;
  • 명시적 캐스팅: float fVal = (float) iVal / 100

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: