[질문] 연산오류에 관하여.
아잉
어제의 오류에 이어
새로운 오류를 발견해서 해결에 관한 방법을 얻고자 글을 올립니다...
% 나머지 연산...
중간중간 안되는 숫자들이 있어요...
제 경우에 경우는 무지 많지만 얘를 들어 6.3%2.1을 들자면 이경우에 결국 찍혀서 나와야 하는건 0일텐데요
하지만!!! 이놈의 플래시는 2.1을 뱉어내내요...
이걸 어떻게 해야할지... 뒤에 소수점도 날려보고 별의 별방법을 다 써보았지만... 도저히 커버가 안되네요...
-
소율
까망, samgucji // 제 글이 보기에는 오해를 살만 하군요. 다시 한번 정확히 표현하자면 소숫점을 이진변환할 때 생기는 오류....이지요 :)
-
꽃님이
//수다님 쵝오 결국 해결을 하긴 했지만 무릎꿇고 조용히 소수점을 없애는 방법으로 코드를 다 바꿨어요 ㅎㅎㅎ
//미수다님 컴퓨터는 모두 연산을 이진으로 하지않나요?... 흠흠흠 수다님말씀대로 asp에서는 잘나온다는데... 흑흑...
// 수다님 ㅎㅎ 관심 감사드려용 ㅎㅎㅎ -
귀1여운렩
컴퓨터의 모든 연산은 이진방식이 아닐까 하는 생각이..^^;;
-
그놈은멋있었다
플래시에서 연산을 이진 방식으로 하기 때문에 생기는 오류(라는 사람도 있고 아니라는 사람도 있고)입니다
-
날놓아줘
우와 저렇게 간단?하게도 되겠군요~ㅎㅇㅎ
게시판에서 페이지 구하는거랑 같은원리네요.ㅎ0ㅎ;;;
역쉬 사람은 생각을 해야해~ㅠ-ㅠ -
새우깡
안되면 되게 하면 되죠 ㅋㅋ
integer상에서는 %가 오류를 일으키지 않는다면
각각에 10이든 100이든 곱해서 소수점을 소거해준다음에 % 연산을 하고 다시 나눠주면 되지요~
아니면 직접 % 연산을 만들어볼수도 있구요~
뭐 간단히 만들면
6.3 % 2.0 = 6.3 - 2.0 * int ( 6.3 / 2.0 )
가 되겠죠 ㅇㅅㅇ 안되면 되게하면 됩니다 ㅋㅋ -
엄마몬
수다님이 올려주신글 잘보았습니다....ㅠ,.ㅠ 제가 생각한 부분과 비슷하게 생각하셨네요 저도 그렇게 해서 조금은 재미를 보았지만... 수가 커질수록....
지금제가 만드는것이 0.01초마다 해당되는 초가 되면 반응이 일어나라 인데...
안되네요... 문제는 단순한 %연산의 오류...ㅠ,.ㅠ 주신 코드로 해봤는데 역시 안되요.. 흑흑... -
도1도캣
ASP에서는 무조건 0 나오네요..ㄷㄷㄷ;
-
정훈
%는 정수만 써봐서 실수에서는 처음 보네요..^^;;
다른 언어에서도 그런지 확인 해봐야 겠는데요..ㅎㅎ;; -
꽃봄
function FixMod(Num1:Number,Num2:Number)
{
\tvar PreFix = 100000.0;
\treturn (Num1 * PreFix) % (Num2 * PreFix) / PreFix
}
trace( FixMod(6.1,2.1)) ;