/ / jak obciąć liczbę zmiennoprzecinkową do bitu ułamkowego int lub nie ułamkowego - szybkie

jak skrócić float do int lub bez ułamkowego bitu - swift

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 № 1

Musimy połączyć dwie rzeczy:

  1. String"s format: inicjator
  2. floor 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".