【问题标题】:Why am I losing the decimal when working this equation in Javascript?为什么在 Javascript 中处理这个方程时我会丢失小数点?
【发布时间】:2013-08-09 16:13:38
【问题描述】:

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

附:忽略 cmets,它们只是添加到这里来解释变量。

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

}

提前致谢!

【问题讨论】:

标签: javascript floating-point decimal equation


【解决方案1】:

^ 在 javascript 中不是数学上的“提高幂”运算符,它是按位 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))

改为

【讨论】:

    【解决方案2】:

    是的,JavaScript 会自动将整数转换为整数。一旦它有一个十进制值(0以外),例如1.5,它应该尊重浮动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多