2011-01-12 3 views
0

누구나 부동 소수점 숫자를 증가시키는 가장 좋은 논리/방법을 설명 할 수 있습니까?10 진수, 부동 소수점 증분

예를 들어 10 진수 시작 수가 2.0이라고 가정하면 다음 항목은 자동으로 숫자를 얻습니다. 즉, 2.01, 2.02, 2.03, ....., 2.09, 2.10, 2.11 .. 등입니다.

하지만 시작 번호는 2.1이므로 다음 시퀀스는 무엇입니까?

그렇습니까? 2.11, 2.12, 2.13, 2.14, ..... 2.19, 2.20 등 ...?

논리적으로 올바 릅니까? 나는 혼란 스럽다. 도와주세요.

+2

요구 사항에 따라 다릅니다. (진정한 10 진수 부동 소수점 타입을 사용하고 있습니까?이 같은 이진 부동 소수점 타입을 사용하지 마십시오.) –

+0

예. 내 응용 프로그램이 위에서 게시 한 것과 정확히 동일한 시퀀스를 필요로한다는 것을 깨달았습니다. 나는 해결책을 얻었다. 당신의 도움을 주셔서 감사합니다. – user458135

답변

2

전적으로 응용 프로그램이 필요로하는 것에 따라 다릅니다. 수 백분의 일로 계산해야합니까? 그렇다면 그 순서가 의미가 있습니다.

하는 반올림 오류를 방지하려면, 다음과 같이, 초기 값, 단위 수, 증가 크기를 저장할 수 있습니다

 float start = 2.0; 
     float increment = 0.01; 

     for (int i = 0; i < 10; i++) 
     { 
      printf("%f ", start + increment * i); 
     } 
+0

예. 이것은 내가 찾고 있던 바로 그 것이다. 내 신청서에는 내 게시물에 묘사 된 것과 동일한 순서가 필요합니다. 다니엘 고마워. – user458135

-1

나는 당신이 나타내는 것을 임의로 정의 할 것이라고 생각합니다. 예를 들어, 소프트웨어 버전에서는 7.9, 7.10, 7.11 등을 사용하는 것이 좋으며 7.10이 7.9보다 큰 것을 알 수 있습니다. 물론, 당신은 그들에게 특별한 대우를 주겠지 만, 기본 산술은 적용되지 않을 것입니다.

+1

7.10이 7.9보다 큰가? 어째서? –

+0

7.10은 7.9 이후에 릴리스 된 버전입니다. – Marcelo

-1

"float 값의 증가가 수행해야합니다 증분 연산자에 의해 ". 그러나 증분 연산자는 10 진수 앞에있는 숫자에서만 작동하기 때문에이 작업은 불가능합니다. float에 증분 연산자가 적용되면 값 시퀀스는 0.1, 1.1, 2.1, 3.1 등이됩니다.