Mam zmienną, którą chcielibyśmy obciąć część ułamkową, ale nie jestem pewien, czy jest to najłatwiejszy sposób. Po prostu wybranie Szybkiego i większość myśli wydawała się zbyt zaangażowana. Obecnie mam:
details.details.append((titles[2], "(averageAnnualSolarProduction) kW"))
ale daje mi to ułamek, który chcę usunąć.
Odpowiedzi:
2 dla odpowiedzi № 1Musimy połączyć dwie rzeczy:
String
"sformat:
inicjatorfloor
operacja, która sprawi, że nasza liczba dziesiętna nie będzie zaokrąglana w górę.
Jeśli chcemy zachować te operacje w jednej linii, chcielibyśmy mieć coś, co wygląda następująco:
details.details.append((titles[2], String(format: "%.0f kW", floor(averageAnnualSolarProduction))))
Ale to jest dużo nawiasów. Wygląda to trochę lepiej, jeśli trochę to odczekamy.
let solarProduction = String(format: "%.0f kW", floor(averageAnnualSolarProduction))
details.details.append((titles[2], solarProduction))
Dla jasności tutaj floor
ma numer jak 3.89
i zwraca największą liczbę całkowitą mniejszą niż ta, która została przekazana, więc wróci 3.0
tutaj.
I dla pewności, że nie drukujemy .0
, Używamy String
"s format:
inicjalizator, który pobiera ciąg formatu i argumenty. Działa to tak samo, jak ciągi formatu działające od co najmniej C. %f
określa, że nasz argument jest liczbą zmiennoprzecinkową, a .0
określa, że będziemy wyświetlać liczby zerowe po przecinku.
Jeśli znajdziemy się zaokrąglając w górę, możemy porzucić połączenie z floor
i po prostu użyj format:
inicjalizator, ale dla wartości 3.89
, to dałoby nam ciąg, który wygląda "4 kW"
.