float a=0; a = 1 / rand(); printf( "%e" , a ); 하면 0으로 값이 나옵니다. 실제로 a속에는 전혀 아무런 값도 저장 되어있지 않은데요.. 그 이유가 뭔가요? double로 해도 마찬가지 값이 나옵니다.
정수 나누기 정수가 되니 0이 될수밖에...
방법은 형변환하는겁니다.
Written By the Black Knight of Destruction
1은 int형이고 rand()또한 int형을 리턴하기 때문에 1 / rand()는 int형 / int형이 되어 rand()가 1보다 크면 0이 될 것입니다. 그래서 a 또한 0이 되는 것이구여..
위 분이 말씀하신 대로 형 변환을 하면 해결됩니다. a = (float) 1 / rand()과 같이 해주시면 float형 나누기 / int형이므로 결과값은 float형이 됩니다.
a = 1 / rand(); 이 부분을 a = 1. / rand();
a = 1 / rand();
a = 1. / rand();
이렇게만 해도 됩니다.
그러면 (float)1과 같은 효과입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정수 나누기 정수가 되니 0이 될수밖에...방법은 형변환하는겁니다
정수 나누기 정수가 되니 0이 될수밖에...
방법은 형변환하는겁니다.
Written By the Black Knight of Destruction
1은 int형이고 rand()또한 int형을 리턴하기 때문에 1 /
1은 int형이고 rand()또한 int형을 리턴하기 때문에
1 / rand()는 int형 / int형이 되어 rand()가 1보다 크면 0이 될 것입니다.
그래서 a 또한 0이 되는 것이구여..
위 분이 말씀하신 대로 형 변환을 하면 해결됩니다.
a = (float) 1 / rand()과 같이 해주시면 float형 나누기 / int형이므로 결과값은 float형이 됩니다.
Re: float사용에 관련하여 질문
a = 1 / rand();
이 부분을a = 1. / rand();
이렇게만 해도 됩니다.
그러면 (float)1과 같은 효과입니다.
댓글 달기