【问题标题】:Javascript multiplication is not working properly for some numbers [duplicate]对于某些数字,Javascript 乘法无法正常工作 [重复]
【发布时间】:2015-11-09 06:18:00
【问题描述】:

我在 JavaScript 乘法中遇到了一个奇怪的行为。我试图将数字乘以 100。 例如:

    > 9.5*100
    > 950
    > 9.95*100
    > 994.9999999999999
    > 9.995*100
    > 999.4999999999999
    > 9.9995*100
    > 999.9499999999999
    > 9.99995*100
    > 999.995
    > 9.999995*100
    > 999.9995
    > 9.9999995*100
    > 999.9999499999999
    > 9.99999995*100
    > 999.9999949999999
    > 9.999999995*100
    > 999.9999995
    > 9.9999999995*100
    > 999.99999995
    > 9.99999999995*100
    > 999.999999995
    > 9.999999999995*100
    > 999.9999999995
    > 9.9999999999995*100
    > 999.9999999999501
    > 9.99999999999995*100
    > 999.999999999995
    > 9.999999999999995*100
    > 999.9999999999994

我只想让数字像这样相乘

9.95*100
995.0 or 995
9.995*100
999.5
9.9995*100
999.95
9.9999995*100
999.99995

这样

> 9.995*100
> 999.4999999999999
> 9.9995*100
> 999.9499999999999
> 9.9999995*100
> 999.9999499999999

有没有其他方法可以将浮点数相乘?

【问题讨论】:

  • 如果你只乘以 100,也许可以考虑将数字转换为字符串,然后将点移动到正确的位置,然后再将其转换为数字
  • b = (9.95).toString().split('.'); b[0]*100+b[1]*(100/(Math.pow(10,b[1].length))); 最糟糕的解决方案但有效:P

标签: javascript multiplication


【解决方案1】:
var factor = 100;
var number = 9.95;
var b = number.toString().split('.'); 
var answer = b[0]*factor+b[1]*(factor/(Math.pow(10,b[1].length)));

这是最糟糕的解决方案之一,但有效:P

【讨论】:

  • 有效!谢谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
相关资源
最近更新 更多