【问题标题】:Convert NSDecimalNumber to String将 NSDecimalNumber 转换为字符串
【发布时间】:2017-01-21 08:09:48
【问题描述】:

如何将 NSDecimalNumber 值转换为字符串?

// Return type is NSDecimalNumber
var price = prod.minimumPrice // 10

// need a String
cell.priceLB.text = NSString(format:"%f", prod.minimumPrice) as String

【问题讨论】:

标签: objective-c swift nsdecimalnumber


【解决方案1】:

您可以尝试其中一些选项。它们都应该返回 10。还要检查为什么需要创建 NSString 格式化数字并将其转换为 String。

"\(price)"
String(describing: price)
NSString(format: "%@", price)

【讨论】:

  • 另外,price.description(withLocale: nil) 应该与NSDecimalNumber 一起使用,而不是NumberFormatter。
【解决方案2】:

NSDecimalValue 继承自 NSNumber。

NSNumber 有stringValue 属性

var stringValue: String { get }

The number object's value expressed as a human-readable string.
The string is created by invoking description(withLocale:) where locale is nil.

Documentation Source

【讨论】:

    【解决方案3】:

    两种方式:

    1. 使用NumberFormatter

    2. 直接使用stringValue属性

    使用 NumberFormatter 的代码固定到小数点后两位:

    斯威夫特 5

    let number = NSDecimalNumber(string: "1.1")
    print(number.stringValue) //"1.1"
    
     let fmt = NumberFormatter()
      fmt.numberStyle = .none;
      fmt.minimumFractionDigits = 2;
      fmt.minimumIntegerDigits = 1;
      fmt.roundingMode = .halfUp;
    
    let result = fmt.string(from: number) ?? "0.00"  
    //1.10
    
    

    【讨论】:

      【解决方案4】:

      试试这个

      var price = prod.minimumPrice    
      cell.priceLB.text = "\(price)"
      //or
      cell.priceLB.text = String(describing: price)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        • 1970-01-01
        相关资源
        最近更新 更多