减少(调整)Double/Float swift 中的可变小数点
Reducing(Adjusting) Double/Float variable decimal points in swift
我正在尝试减少这个简单函数的小数点,它 return 某些东西的概率,但我了解到我需要将 Double 转换为 String 然后减少小数点和 return 结果视图中的字符串值。
有什么方法可以强制 Double 变量(或其他更简单的方法)在 swift 5.1 的结果中仅显示 2 个小数点?
@State var pairCount = 0
@State var rollCount = 0
@State var pairChance : Double = 0
Text("\(pairChance) %")
Button(action: {
self.pairChance = Double(self.pairCount) / Double(self.rollCount) * 100.0
})
您可以使用 NumberFormatter
:
@State var pairCount = 1.0
@State var rollCount = 3.0
@State var pairChance = "" // this should be a string, because numbers don't have a format. Strings do.
let formatter = { () -> NumberFormatter in
let f = NumberFormatter()
f.maximumFractionDigits = 2
f.numberStyle = .percent
return f
}()
var body: some View {
VStack {
Text("\(pairChance)")
Button(action: {
// here we format it
if let formatted = self.formatter.string(for: (self.pairCount / self.rollCount)) {
self.pairChance = formatted
}
}) {
Text("Button")
}
}
}
SwiftUI 的文本视图有一个可选的 specifier
参数,让我们可以自定义数据在标签内的呈现方式。
@State var pairCount = 2
@State var rollCount = 3
@State var pairChance : Double = 0
var body: some View {
VStack {
Text("\(pairChance, specifier: "%.2f")%")
Button(action: {
self.pairChance = Double(self.pairCount) / Double(self.rollCount) * 100.0
}) {
Text("Calculate")
}
}
}
我正在尝试减少这个简单函数的小数点,它 return 某些东西的概率,但我了解到我需要将 Double 转换为 String 然后减少小数点和 return 结果视图中的字符串值。
有什么方法可以强制 Double 变量(或其他更简单的方法)在 swift 5.1 的结果中仅显示 2 个小数点?
@State var pairCount = 0
@State var rollCount = 0
@State var pairChance : Double = 0
Text("\(pairChance) %")
Button(action: {
self.pairChance = Double(self.pairCount) / Double(self.rollCount) * 100.0
})
您可以使用 NumberFormatter
:
@State var pairCount = 1.0
@State var rollCount = 3.0
@State var pairChance = "" // this should be a string, because numbers don't have a format. Strings do.
let formatter = { () -> NumberFormatter in
let f = NumberFormatter()
f.maximumFractionDigits = 2
f.numberStyle = .percent
return f
}()
var body: some View {
VStack {
Text("\(pairChance)")
Button(action: {
// here we format it
if let formatted = self.formatter.string(for: (self.pairCount / self.rollCount)) {
self.pairChance = formatted
}
}) {
Text("Button")
}
}
}
SwiftUI 的文本视图有一个可选的 specifier
参数,让我们可以自定义数据在标签内的呈现方式。
@State var pairCount = 2
@State var rollCount = 3
@State var pairChance : Double = 0
var body: some View {
VStack {
Text("\(pairChance, specifier: "%.2f")%")
Button(action: {
self.pairChance = Double(self.pairCount) / Double(self.rollCount) * 100.0
}) {
Text("Calculate")
}
}
}