2014-11-04 1 views
0

저는 KineticJS를 사용하여 많은 변형을 만듭니다. 다음과 같이 :KineticJs : int 또는 double을 사용 하시겠습니까?

var baseX = pos.x; 
var baseY = pos.y; 
var w = self.getWidth(); 
var h = self.getHeight(); 
var halfW = w/2; 
var halfH = h/2; 
var aspectRadian = Math.atan2(halfH, halfW); 

아주 빨리 정수는 두 자리 숫자로 바뀝니다. 그러면 어떻게 처리할까요? 예를 들어 Rect의 위치를 ​​설정해야하는 경우를 예로들 수 있습니다. 나는 KineticJS는 내부적으로 반올림을하게하거나 이중 숫자와 함께 작동 할 수 있음을 추측

rect.x(10.3); 

: 더 반 어떤 이해가되지 않습니다 다음 픽셀가 없기 때문에 나는

rect.x(10); 

을한다.

KineticJS로 작업 할 때 int 또는 double을 사용하는 것이 더 좋습니까? 하나 또는 다른 솔루션으로 성능 문제 또는 반올림 오류가 발생합니까? 가능한 한 정확하도록 항상 double을 사용해야합니까?

+2

JavaScript는 항상 float를 내부적으로 사용하며 KineticJS는 정수로 반올림하지 않습니다. BTW, 실제로는 반 화소입니다 - 당신은 x = 10.50로 rect를 그릴 수 있으며 디스플레이의 반 화소 경계에 나타납니다. 조언 : 좌표를 조정하지 않아도됩니다. – markE

+0

@markE 그래서 int number로 시작할 때도 항상 double을 사용해야합니까? – confile

+1

JavaScript는 내부적으로 모든 숫자를 float 형식으로 변환합니다. 따라서 int [예 : parseInt (20.22)]를 제공하면주의 깊게 boxed 된 int가 자동으로 매우 정확한 float (20.000000001)가됩니다. 그러므로 어떤 전환도 신경 쓰지 마세요. :-) – markE

답변

0

픽셀 만 사용하는 계산을 계획하고 있다면 float (또는 double)로 고정해도 문제가 발생하지 않아야합니다 (작은 문제는 앤티 앨리어싱을 제외하고는 전혀 문제가되지 않습니다.). 그러나 픽셀을 다른 측정 값 (예 : 인치)으로 변환하려고하면 Javascript의 부동 소수점 정밀도가 사용자에게 불리하게 작용할 수 있습니다.