2011-09-02 2 views
0

추적 (123.456 - 123) // 출력이 0.456000000000003 !!!!!! 왜 이런 이상한 가치를 제공합니까? 0.456 을 출력해야합니다. (제 목표는 소수를 가짐)추적 (123.456 - 123)이 플래시 as2에서 0.456000000000003을 제공하는 이유

+0

'추적 ((123.456 * 1000) - (* 1000 (123)))/1000' = 0.456 – rlemon

+0

이상한 이것이 내가 통지를 한 것은 이번이 처음이다! 그래서 나는 이것이 내가 원하는 것이라고 생각한다 : var theNumber : String = 123.456; var theArray = theNumber.split ("."); trace (theArray [1]) – Armin

답변

1

부동 소수점 숫자이며 부동 소수점의 모든 숫자를 정확하게 나타낼 수 없으므로이 숫자를 출력해야합니다. 당신이 부분을해야 할 경우

, 진영 클래스를 만들어 (어쩌면 하나는 이미 나도 몰라에 내장되어 있습니다.)

1

당신은 부동 소수점 숫자로 다루고 있기 때문에. 당신은 그것을 모아 필요 해요 (숫자가 변경 포함)

http://board.flashkit.com/board/showthread.php?t=778701

발휘 위의 링크를 형성 : 1/3, 1/7는 표현할 수없는 것처럼

var num:Number = 123.456 - 123; 
num *= 1000; 
num = Math.round(num); 
num /= 1000; 
trace(num); 
3

을 잘 10 진수 표기법 (0.33333 ... 및 0.142857142857 ... 각각), 특정 십진수는 이진수로 잘 표현 될 수 없으므로 이와 같은 오류가 발생합니다. 그것을 해결하려면 다음을 수행하십시오

var mynum=(123.456 - 123); 
mynum=Math.round(mynum*1000)/1000; 
trace(mynum); 
관련 문제