2012-12-17 6 views
-1

1.24234 또는 45.314과 같은 유리수를 124234 또는 45314 같은 정수로 변환하는 방법은 무엇입니까?정수로 변환

+3

당신은 무엇을 시도 했습니까? –

+0

원래 숫자는 어떻게 저장되고 표현됩니까? –

+3

간단한 알고리즘 : 소수점을 제거하십시오 ... –

답변

1

문자열로 변환

소수점의 위치를 ​​찾습니다.

위 문자열의 길이에서 십진수를 뺍니다.

그런 다음 문자열에서 포인트를 가져옵니다.

0
int i=0; 
float a = 1.24234; 

for(i; i<20; i++){ 
    float b=pow(10,i); 
    if((a*b)%10==0) 
     break; 
} 
int c = pow(10,i-1); 
int result = a*c; 

이 코드는 도움이 될 것입니다.

+0

그게 내가 말한거야. 이것은 기본적으로 깨졌습니다. –

+0

음, 비싸고 값이> = 1인지 확인하는 테스트가 좋습니다. –

0

전화 번호가 W.D (Whole.Decimal가)

W 단지 (int)를 W.D을 얻으려면 경우. D를 받으려면 W.D - (int) W.D

이제 소수점과 소수점을 구분합니다. 당신이 지금보다 10

인 결과 얻을 때까지 10 D를 분할하여 W의 킵에 10 배의 승수를 파악하려면 WxN + D 을

(N은 10로 나눈 횟수입니다)

참고 : 예를 들어 코드를 작성하지 않았습니다. 숙제가 될 수 있다고 생각하기 때문입니다. 또한 매우 긴 (예 : 정밀한 부동 소수점)을 사용하는 경우이 값은 유지되지 않으므로 오버 플로우 할 수 있습니다. 이와 같은 것을 구현하기 전에 범위를 확인하십시오.