【问题标题】:avoid javascript Infinite when divide with zero [duplicate]用零除法时避免javascript Infinite [重复]
【发布时间】:2018-03-22 19:38:19
【问题描述】:

我想找到比较 2 个数字的增加或减少的百分比,第二个语句有效,但是如果第二个数字为零,我的 test3 失败。

const test = Math.abs(((120 - 0) / 0) * 100).toFixed(1) + '%'
const test2 = Math.abs(((50 - 25) / 25) * 100).toFixed(1) + '%'
const test3 = Math.abs(((10000 - 0) / 0) * 100).toFixed(1) + '%'

console.log('test:', test)
console.log('test2:', test2)
console.log('test3', test3)

https://jsfiddle.net/vm1vsf6p/

如何解决这个问题?

【问题讨论】:

  • but my test3 has failed 所以你说test 可以,只是test3 是失败的?
  • 你所有的测试都有同样的问题,不仅仅是3。不要除以0。在除以之前检查第二个数字是否为零。

标签: javascript math


【解决方案1】:

你可以假设0% 的任何东西都是0,所以:

function test(num1, num2, divider) {
  var output = 0;

  if (divider) {
    output = Math.abs(((num1 - num2) / divider) * 100).toFixed(1);
  }

  return output+'%';
}

console.log('test:', test(120, 0, 0))
console.log('test2:', test(50, 25, 25))
console.log('test3', test(10000, 0, 0))

【讨论】:

  • 这将在案例 3 中返回 0。我认为该公式用于表示某个增益因子,在这种情况下应该是一个很大的量(但由于公式和零,它变成了 Infinity一定数量)。问题在于公式,而不是您的代码。
  • @MohitBhardwaj 好吧,我不会修正这个公式,因为 OP 应该比我更了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多