没有小数位的心率
Heartrate with no decimal places
我在 Xcode 中为 Apple Watch 开发一个手表应用程序,Apple 开发者网站 SpeedySloth: Creating a Workout 的示例代码将心率四舍五入到小数点后一位,例如61.0
我该如何解决这个问题?
case HKQuantityType.quantityType(forIdentifier: .heartRate):
/// - Tag: SetLabel
let heartRateUnit = HKUnit.count().unitDivided(by: HKUnit.minute())
let value = statistics.mostRecentQuantity()?.doubleValue(for: heartRateUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
label.setText("\(roundedValue) BPM")
我尝试将其中的两个 1 都更改为 0,但这给了我 6.1 BPM 或 0.0 BPM
谢谢
一个简单的解决方案是舍入为整数并显示整数。
let value = // ... some Double ...
let s = String(Int(value.rounded(.toNearestOrAwayFromZero)))
label.setText(s + " BPM")
但是,您应该正确地将基于数字的字符串格式设置交给 NumberFormatter。这就是它的工作:格式化一个数字.
let i = value.rounded(.toNearestOrAwayFromZero)
let nf = NumberFormatter()
nf.numberStyle = .none
let s = nf.string(from: i as NSNumber)!
// ... and now show the string
我在 Xcode 中为 Apple Watch 开发一个手表应用程序,Apple 开发者网站 SpeedySloth: Creating a Workout 的示例代码将心率四舍五入到小数点后一位,例如61.0 我该如何解决这个问题?
case HKQuantityType.quantityType(forIdentifier: .heartRate):
/// - Tag: SetLabel
let heartRateUnit = HKUnit.count().unitDivided(by: HKUnit.minute())
let value = statistics.mostRecentQuantity()?.doubleValue(for: heartRateUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
label.setText("\(roundedValue) BPM")
我尝试将其中的两个 1 都更改为 0,但这给了我 6.1 BPM 或 0.0 BPM
谢谢
一个简单的解决方案是舍入为整数并显示整数。
let value = // ... some Double ...
let s = String(Int(value.rounded(.toNearestOrAwayFromZero)))
label.setText(s + " BPM")
但是,您应该正确地将基于数字的字符串格式设置交给 NumberFormatter。这就是它的工作:格式化一个数字.
let i = value.rounded(.toNearestOrAwayFromZero)
let nf = NumberFormatter()
nf.numberStyle = .none
let s = nf.string(from: i as NSNumber)!
// ... and now show the string