【问题标题】:How to keep value as number in JSON.stringify()如何在 JSON.stringify() 中将值保持为数字
【发布时间】:2017-05-28 05:15:01
【问题描述】:

我正在尝试使用JSON.stringify() 将一些值解析为 JSON 格式。 amount 是一个字符串变量。我想要 JSON 格式的最终​​值作为数字,但我目前的方式不起作用。在 JSON.stringify() 之后,它仍然以 "price":"1.00" 的形式出现。如何确保 JSON 中的最终值是数字?谢谢你的帮助!

我当前的代码:

var data = JSON.stringify({
 "payer": "a cat",     
 "price": parseFloat(amount).toFixed(2),

});

【问题讨论】:

  • 那你为什么要用 toFixed 把它转换成字符串呢?

标签: javascript json string parsing numbers


【解决方案1】:

toFixed 返回一个字符串。如果你想输出一个数字,只需使用parseFloat

JSON.stringify({
  "payer": "a cat",
  "price": parseFloat(amount)
});

我认为没有办法在不将其转换为字符串的情况下将数字输出到小数点后的任何精度。

【讨论】:

  • 或者只是+amount
  • 乘法,下限/圆/上限,除法
【解决方案2】:

我有同样的问题,创建随机浮点数,这是我的解决方案:

// Create a random float number between 10 and 120, with only 2 decimal place
var number = Math.floor((Math.random()*110+10)*100)/100

所以仍然是一个浮点值,小数点后 2 位,也在 JSON.stringify() 之后

【讨论】:

    【解决方案3】:

    我认为 Number() 也可以工作

    区别是here。我在 JSON.stringify 中都使用过

    var data = JSON.stringify({
      "payer": "a cat",
      "price": Number(amount)
    });
    

    【讨论】:

      【解决方案4】:

      这条路对我有用。

      function replace(key, value) {
        if (typeof value != "object") {
          let change = parseFloat(value);
          return change;
        }
        return value;
      }
      
      const msg = JSON.stringify(params, replace);`
      

      Params 是一个包含查询参数的变量。

      【讨论】:

      • 这不会尝试将每个字符串转换为浮点数,无论字符串是否包含数字?
      • 是的。如果你想避免这种情况,你应该添加另一个验证。
      猜你喜欢
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2022-07-28
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多