Уменьшение (корректировка) двойных / плавающих переменных десятичных точек в Swift - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь уменьшить десятичные точки этой простой функции, которые возвращают вероятность чего-то, но я узнал, что мне нужно преобразовать Double в String, затем уменьшить десятичные дроби и вернуть строковое значение в результате просмотра.

Есть ли способ заставить переменную Double (или другой более простой способ) показать только 2 десятичных знака в результате с быстрым 5.1?

    @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
                      })

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Текстовые представления 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")
        }
    }
}
0 голосов
/ 19 марта 2020

Вы можете использовать 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")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...