int 형 증감을 사용하는 일반적인 for loop
c언어든, JAVA든 C# 이든.. 기타등등에서는 일반적으로 쓰는 for 루프에서는
아래처럼 int 형 데이터를 증감시키면서 반복적인 연산을 수행하는 것이 일반적이다.
for (int i = 0; i < 10; i++)
{
// 블라블라~
}
double 형 증감이 필요한 상황?
최근 어떤 프로그램을 하면서 콤보박스에 데이터를 0.1 부터 2.0 까지 넣어야 하는 상황이 있어서
일반적인 방법으로
for (double d = 0; d < 2.0; d+= 0.1)
{
// 블라블라~
}
하지만 이 방법은 상황은 부동소수점 문제가 발생하여
중간중간 데이터가 1.29999999999999, 1,38999999999999
뭐 이런식으로 적절한 반올림이 되지 않는 문제가 발생하였다.
문제 해결을 위한 방법? (C# 에서만 사용해봄. )
적당한 구글링을 통해서 스택오버플로에서 작성한 코드를 보니 Math 함수를 이용하여 적절한 반올림으로
이 문제를 해결한 것을 보았다.
정확히, 아래 예제 코드는,
0.1 부터 2.0 까지의 데이터를 comboBox_test 라는 변수명을 가진 콤보박스에 추가하는 코드이다.
for (double d = 0.1; d < 2.1; d += 0.1)
{
string temp = string.Format("{0:0.0}", (Math.Round(d * 10) / 10));
comboBox_test.Items.Add(temp);
}
이론적으로 적절한 반올림이 되지 않는 이유를 찾아보고 싶진 않아서
그냥 돌아가는 것만 보고 이렇게 쓰기로 결정했다.. ^^;
'C# 윈도우 프로그래밍' 카테고리의 다른 글
C#) String 출력 시 format (0) | 2022.06.12 |
---|---|
C#) 랜덤 숫자, 랜덤 문자를 멋지게 뽑는법 (0) | 2022.06.10 |
댓글