C#/Problems

1. 정수값끼리 나누었는데 0이 나올때

dev_sr 2020. 4. 5. 00:29

 

 

1. 문제

 

과제를 하던 중에 변수 2개를 이용하여

50% 라고 출력을 하고 싶어서 연산을 했는데 0만 나왔다.

 

 

1
2
3
4
5
            //50% 출력하기
            int a=5;
            int b=10;
 
            Console.WriteLine(a/b*100+"%");
 
 

0% !

 

 

 

 

 

2. 해결

 

두 int형식 변수 중 하나를 float로 바꾼다.

 

1
2
3
4
5
            //50% 출력하기
            int a=5;
            float b=10f;
 
            Console.WriteLine(a/b*100+"%");;
 

 

50% !

 

 

 

5/10 의 값은 0.5가 나오는데 

둘다 정수형일 경우 0.5가 0이 되어서 0만 출력된다.

 

Ms Docs에 따르면 정수형식과 float, double, decimal은 혼합하여 연산이 가능하다.
float, double은 정수와 연산할 경우 암시적으로 부동 소수점 형식 중 하나로 변환된다.

 

따라서 두 변수 중 하나만 float나 double형식으로 변환하면

소수점 형식으로 변환되어 원하는 값 50%가 나온다.

 

 

 

 

참고: 부동 소수점 숫자형식, MS Docs

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types