首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSString stringWithFormat语法

NSString stringWithFormat语法
EN

Stack Overflow用户
提问于 2017-04-19 09:35:44
回答 2查看 475关注 0票数 0

在Apple的一个示例代码中,我看到了以下几行:

代码语言:javascript
运行
复制
int digits = MAX( 0, 2 + floor( log10( newDurationSeconds)));
self.exposureDurationValueLabel.text = [NSString stringWithFormat:@"1/%.*f", digits, 1/newDurationSeconds];

我无法理解语法,stringWithFormat:有两个参数,但只有一个%符号。我知道它是1/newDurationSeconds的字符串值,直到N=digits,但是语法是我所不懂的。

如何将其翻译成Swift 3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-19 09:42:11

第一个参数提供所需的十进制数,由*表示,第二个值是数字。

Swift

代码语言:javascript
运行
复制
String(format: "1/%.*f", digits, 1/newDurationSeconds)

注:此功能由基金会框架提供。您必须使用import Foundation (或import UIKitimport Cocoa)才能使其工作。

您可以找到格式字符串这里(苹果的文档)这里(IEEE打印规范)的文档。

在第二份文件中,*被解释为:

字段宽度或精度,或两者都可用星号( '*‘)表示。在这种情况下,int类型的参数提供字段宽度或精度。

票数 1
EN

Stack Overflow用户

发布于 2017-04-19 10:45:27

您可以使用NumberFormatter代替C样式的格式字符串;它通常更清晰,虽然更长:

代码语言:javascript
运行
复制
  let newDurationSeconds = Double(10.7)
  let digits = max(0,2 + (log10(newDurationSeconds).rounded(.towardZero)))
  let formatter = NumberFormatter()
  formatter.maximumFractionDigits = Int(digits)
  let s = formatter.string(from: NSNumber(value: newDurationSeconds))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43491799

复制
相关文章

相似问题

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