2013-08-09 2 views
0

저는 x 일 후에 누군가의 시스템에 얼마나 많은 물질이 아직도 남아 있는지 계산하기 위해 계산기 작업을하고 있습니다. 세 가지 변수는 매일 섭취하는 양, 섭취 한 일수 및 물질의 반감기입니다. 아래의 수식이 100 % 정확하지 않을 수 있지만, 현재이 문제가 발생하지 않았습니다. 대답이 정수로 변환되는 데 문제가 있습니다. 내가 어디로 잘못 가고 있니? float (십진수) 값을 유지하려면 모든 것이 필요합니다.Javascript에서이 방정식을 사용할 때 십진수를 잃는 이유는 무엇입니까?

P. 주석을 무시하고 변수를 설명하기 위해 여기에 추가되었습니다.

dose = 8.00 // 8mg dose 

meta = 70.0 // 70 hour half-life 

days = 5  // 5 days of use 


sys = dose * (1.0/2.0)^(24.0/meta) 


for(x=2; x <= days; x++){ 

    sys = ((sys+dose) * (1.0/2.0)^(24.0/meta)) 

} 

미리 감사드립니다.

+0

중복 가능성 [스크립트 지수 (http://stackoverflow.com/questions/5907063/javascript-exponents) – JaredMcAteer

답변

-2

예, JavaScript는 정수를 정수로 자동 변환합니다. 예를 들어 10 진수 값 (0 이외)이 있으면 1.5, 그것은 플로트를 존중해야합니다.

6

^은 수학에서 'raise to a power'연산자가 아니며, 비트 XOR 연산자이며 항상 정수를 제공합니다. Math 클래스의 pow을 사용하려고합니다.

sys = dose*Math.pow((1.0/2.0), (24.0/meta)) 

sys = (sys+dose)*Math.pow((1.0/2.0), (24.0/meta)) 

시도 대신

관련 문제