【问题标题】:Javascript calcul doesn't work if number upper than 1000如果数字大于 1000,则 Javascript 计算不起作用
【发布时间】:2014-05-14 12:00:30
【问题描述】:

我尝试在 javascript 中计算一个简单的除法,但如果我的数字

这是我的代码:

var cal = parseFloat(currentAmount.toString()) / parseFloat(currencyArray[i][j].toString())

如果currencyArray[i][j] 等于1,3703currentAmount = 100 我的结果是好的(72.98) 但是如果我输入1000 我的结果不好(0.7298... )

【问题讨论】:

  • 为什么是 toString ?你在 currentAmount 有什么?
  • 请在fiddle 中重现该问题。现在,您似乎正在处理格式化为字符串的数字,但这实际上是一个猜谜游戏。
  • 确保您的currentAmount 没有用逗号或千位分隔符表示
  • 100 / 13703 是 not 72.98,因此即使您的“好”结果实际上也不正确。你为什么打电话给.toString()

标签: javascript arrays division parsefloat


【解决方案1】:

由于您获得的特定价值,我猜测您的currentAmount 不是您声称的1000,而是1,0001 000,甚至在某些国家/地区甚至1'000。当parseFloat 得到它时,它只会看到1,因为, 不是数字中的有效字符。 1 / 1.37030.7298...

数字不能有千位分隔符,小数必须是点。 (作为在法国长大的人,我知道这可能会令人困惑!)

【讨论】:

    【解决方案2】:

    好的,大胆猜测。

    您似乎将数字作为字符串处理,格式错误,您有"1 000""1,000",并且您希望将其解析为1000。你的问题是

    parseFloat("1 000")
    

    给予

    1
    

    在这种情况下,去掉空格:

    var currentAmountAsNumber = parseFloat(currentAmount.toString().replace(/[ ,]/g,''))
    

    但是有一个测试用例可能会让我们简化它。

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多