将 NSDecimalNumber 转换为字符串

Posted

技术标签:

【中文标题】将 NSDecimalNumber 转换为字符串【英文标题】:Convert NSDecimalNumber to String 【发布时间】: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

【问题讨论】:

***.com/questions/36794489/… 【参考方案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】:

两种方式:

    使用NumberFormatter

    直接使用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)

【讨论】:

以上是关于将 NSDecimalNumber 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如果 NSDecimalNumber 大于 Uint64,如何将 NSDecimalNumber 转换为字节数组?

将 NSString 转换为 NSDecimalNumber

根据语言环境将 NSSting 转换为 NSDecimalNumber

如何在不损失精度的情况下解码 NSDecimalNumber?

舍入 NSDecimalNumber

从 `NSDecimal` 或 `NSDecimalNumber` 转换为 C# 的 `decimal` 类型