【问题标题】:correct NSNumberFormatter for many cases in swift在 swift 中的许多情况下正确的 NSNumberFormatter
【发布时间】:2015-02-11 20:12:50
【问题描述】:

我在 Swift 中遇到了 NSNumberFormatter 和重要数字的一些问题。

var test1 : Float = 0.2345
var test2 : Float = 1234.4567
var test3 : Float = 2.234234

我想在 3 个不同的标签(标签 1、标签 2、标签 3)中显示此值。我正在寻找 NSNumberFormatter 所以我的变量可能看起来像:

  • 0.24
  • 1234.46
  • 2.23

所以它们都在“。”之后有 2 位数字。 如果第一个数字是 0,它是可见的

现在我的代码是

  var formatter = NSNumberFormatter()
  formatter.maximumFractionDigits = 2
  formatter.usesSignificantDigits = true
  formatter.minimumSignificantDigits = 1
  formatter.maximumSignificantDigits = 4
label1.text = formatter.stringFromNumber(var1)
label2.text = formatter.stringFromNumber(var2)
label3.text = formatter.stringFromNumber(var3)

【问题讨论】:

    标签: swift


    【解决方案1】:

    离开

    formatter.maximumFractionDigits = 2
    formatter.minimumSignificantDigits = 1
    

    并添加:

    formatter.numberStyle = .DecimalStyle
    

    删除其余部分:

      formatter.usesSignificantDigits = true
      formatter.maximumSignificantDigits = 4
    

    它应该只给你带 2 位小数的数字。

    【讨论】:

    • 在这种情况下,对于 0.23,我只看到 0.23 - 没有零
    • @moonvader 我相信只有 maximumFractionDigits 和 .DecimalStyle 会排序。
    • 所以 formatter.minimumSignificantDigits = 1 不是必需的?
    • @moonvader 我相信是这样,但不是 100% 肯定,你可以试试。
    • 太棒了!还可以美化: let fmtr = NSNumberFormatter() fmtr.numberStyle = .DecimalStyle fmtr.usesGroupingSeparator = true fmtr.minimumFractionDigits = 0 fmtr.maximumFractionDigits = 1 fmtr.alwaysShowsDecimalSeparator = false
    猜你喜欢
    • 2022-07-26
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多