如何解决在字母数字 NSString 中将 FLOATS 向上/向下舍入为 INTS
我被这个问题困住了——
我有一个字母数字 Nsstring。字符串中的数字包含多个小数,我想将这些数字四舍五入为整数。
字符串如下所示:
值:A:123.45678 B:34.55789 C:2.94567
我正在尝试使用此代码:[self log:[Nsstring stringWithFormat:@"VALUES: %.f\n",values.toString]];
转换为:
值:A:123 B:35 C:3
Xcode 提供此警告 —
Format specifies type 'double' but the argument has type 'Nsstring *'
Replace '%.1f' with '%@'
我想我需要一种不同的方式来“扫描”字符串,识别数字并根据需要进行向上/向下舍入,然后将其转换为新字符串。我只是每次尝试都失败了。
任何帮助将不胜感激。
解决方法
我喜欢 NSScanner 做这种事情。这是一个 Swift 解决方案;不好意思,懒得翻译成Objective-C了,有点间接:
let s = "VALUES: A:123.45678 B:34.55789 C:2.94567"
let sc = Scanner(string:s)
sc.charactersToBeSkipped = nil
var arr = [String]()
while (true) {
if let prefix = sc.scanUpToCharacters(from: .decimalDigits) {
arr.append(prefix)
} else { break }
if let num = sc.scanDouble() {
let rounded = num.rounded()
arr.append(String(Int(rounded)))
} else { break }
}
let result = arr.joined()
print(result) // "VALUES: A:123 B:35 C:3"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。