首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >swift如何将Decimal类型转换为String类型

swift如何将Decimal类型转换为String类型
EN

Stack Overflow用户
提问于 2017-08-10 18:02:42
回答 4查看 17.4K关注 0票数 8

如何在swift中将Decimal转换为String

例如

代码语言:javascript
运行
复制
let de = Decimal(string: "123")

然后如何将de转换为String。

EN

回答 4

Stack Overflow用户

发布于 2018-08-08 09:03:30

利用十进制符合CustomStringConvertible协议这一事实,我会简单地这样做:

代码语言:javascript
运行
复制
let decimalString = "\(de)"
票数 12
EN

Stack Overflow用户

发布于 2018-04-21 02:25:42

转换为NSDecimalNumber并使用stringValue。

NSDecimalNumber(decimal: de).stringValue

票数 4
EN

Stack Overflow用户

发布于 2017-08-10 18:24:00

使用NSNumberFormatter解析您的输入。将其generatesDecimalNumbers属性设置为true:

代码语言:javascript
运行
复制
let formatter = NumberFormatter()
formatter.generatesDecimalNumbers = true

下面是你如何使用它,如果你想在字符串不能被解析时返回0:

代码语言:javascript
运行
复制
func decimal(with string: String) -> NSDecimalNumber {
    return formatter.number(from: string) as? NSDecimalNumber ?? 0
}

decimal(with: "80.00")

// Result: 80 as an NSDecimalNumber

默认情况下,格式化程序将查看设备的区域设置以确定小数标记。你应该让它保持原样。出于示例的目的,我将其强制转换为法语地区:

代码语言:javascript
运行
复制
// DON'T DO THIS. Just an example of behavior in a French locale.
formatter.locale = Locale(identifier: "fr-FR")

decimal(with: "80,00")
// Result: 80

decimal(with: "80.00")
// Result: 0

如果您确实希望始终使用逗号作为小数标记,则可以设置decimalSeparator属性:

代码语言:javascript
运行
复制
formatter.decimalSeparator = ","
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45610567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档