【问题标题】:How to output a required number of significant digits for a number如何为数字输出所需数量的有效数字
【发布时间】:2015-03-31 23:58:00
【问题描述】:

我必须在浏览器上显示以下 JSON ...

{
  "testDoubleArr": [1, 2.0, 3.45],
  "testStr3": "SHA",
  "testDouble1": 12.56,
  "testDouble2": 1.0,
  "testStr1": "OMG"
}

在浏览器上它会以以下格式显示...

{
  "testDoubleArr": [1, 2, 3.45],
  "testStr3": "SHA",
  "testDouble1": 12.56,
  "testDouble2": 1,
  "testStr1": "OMG"
}

如果值仅包含小数点后的零,则它已删除所有零,而我必须显示它们而不将其转换为字符串。

如何指定 JavaScript 数字的有效位数?

【问题讨论】:

  • 它们是一样的——在javascript中只有一个Number类型。
  • “我必须在不将其转换为字符串的情况下显示它们”您希望如何做到这一点?
  • 我想用零显示它们意味着 "testDouble2": 1.0 而不是 "testDouble2": "1.0"
  • @PrabhatNigam 我认为在其他 cmets 中提出的观点是,您绝对需要以某种容量转换为字符串才能显示给用户。目前,您正在将数值设置为 javascript 中的数字类型。输出这些时,您将丢弃无关紧要的数字,除非您做一些事情来专门指定您正在寻找的字符串表示。如果您担心在不转换显示(或对数字执行任何计算)的情况下匹配精确的输入值,那么您应该使用字符串字段作为输入。
  • 另外,如果您只是想模仿输入字符串,最好不要在显示此字符串之前解析 JSON。如果您从不将字符串解析到内存中,则字符串将保持原样以供显示。

标签: javascript json


【解决方案1】:

您可以指定有效位数为小数。

var num = 1;
num.toFixed(2); // returns the string "1.00"

但是,如果数字有更多的有效数字,它们将被删除:

var num = 1.123456789;
var num.toFixed(2) // returns the string "1.12"

【讨论】:

  • @Chad,此解决方案并非对所有场景都有效。首先,它会在点之后丢弃剩余的数字。第二件事它也会将整数转换为双数。例如 1 会显示为 1.00,这是不合理的。
  • 所有 JavaScript 数字都是浮点数。只有一种数字类型。您的问题并不能真正解释您的所有要求。
  • 我唯一的要求是,如果值为 1,那么它应该显示 1 而不是“1”,如果值为 1.0,那么它应该显示 1.0 而不是“1.0”,同时在 UI 上以 json 显示。
  • 我希望 json 应该打印在 UI 上,因为它在 jsonformatter.curiousconcept.com/#about 中工作,这个工具打印 JSON,因为它与值的类型无关。对于您可以在该工具中使用的示例 json ...
  • {“数据”:{“testDoubleArr”:[1.3],“testDouble2”:0.0,“InterestRate”:0.0,“testInt1”:0,“testBool3”:真,“testInt2”: 0,“testBool2”:真,“testInt3”:0,“testBool1”:真,“月”:“UMG”,“testStr3”:“SHA”,“testStr2”:“HAMP”,“testDouble3”:0.0} ,“header”:{“modelName”:“测试租户版本”,“majorVersion”:1,“transactionId”:“2”,“minorVersion”:0,“date”:“2015-01-30T11:18:00.000 " } }
猜你喜欢
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
相关资源
最近更新 更多