【问题标题】:Format Double up to Max Non-Zero Significant Digits格式化最大非零有效数字双倍
【发布时间】:2020-09-02 20:54:00
【问题描述】:

是否有格式说明符将双精度格式设置为仅在小数点后最多包含最大数量的非零有效数字?

例如,如果我想要最多 4 个有效数字并且数字是:

3.14159265359,我要显示3.1459

5.7350,我要 5.735

2.680,我要 2.68

9.200,我要 9.2

7.000,我要 7(没有小数点)

【问题讨论】:

  • 你试过什么? NumberFormatter 文档有没有提到这方面的内容?
  • 您所描述的小数点后的有效数字在文档中称为小数位

标签: ios swift formatting


【解决方案1】:

您可以使用NumberFormatter。您只需将maximumFractionDigits 设置为4 并将minimumFractionDigits 设置为0

let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.maximumFractionDigits = 4
nf.minimumFractionDigits = 0

nf.string(for: 3.14159265359)  // "3.1416"
nf.string(for: 5.7350)         // "5.735"
nf.string(for: 2.680)          // "2.68"
nf.string(for: 9.200)          // "9.2"
nf.string(for: 7.000)          // "7"

如果您想对结果进行四舍五入,即3.1415,您只需将 NumberFormatter roundingMode 属性设置为 .floor

let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.maximumFractionDigits = 4
nf.minimumFractionDigits = 0
nf.roundingMode = .floor
nf.string(for: 3.14159265359)  // "3.1415"

【讨论】:

    【解决方案2】:

    这应该适合你:

    `让数字:Float = 3.14159

    let str1 = String(format: "%.2f", number) // 3.14

    let str2 = String(format: "%.4f", number) // 3.1416(四舍五入)

    有一个非常好的教程here

    让我知道这是否有效!这是将数字显示为字符串值后对其进行格式化。

    如果您尝试实际更改数字值,这已经是answered on stackoverflow.

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      相关资源
      最近更新 更多