为什么我在Javascript中使用这个等式时会丢失小数?

0 javascript floating-point equation decimal

我正在研究一个计算器,以确定在x天数之后有多少物质仍存在于某人体系中.这三个变量是每天服用的量,服用的天数以及物质的半衰期.我的下面的公式可能不是100%正确,但这不是我现在遇到的问题.我遇到的问题是将答案转换为整数.我哪里错了?我需要一切保持浮点(十进制)值.

PS忽略评论,他们只是在这里添加解释变量.

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))

}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ste*_*son 6

^在javascript中不是数学'加速到幂'运算符,它是按位XOR运算符,并且总是给出一个整数.你想powMath课堂上使用.

尝试

sys = dose*Math.pow((1.0/2.0), (24.0/meta))
Run Code Online (Sandbox Code Playgroud)

sys = (sys+dose)*Math.pow((1.0/2.0), (24.0/meta))
Run Code Online (Sandbox Code Playgroud)

代替