W przypadku zaokrąglania do dwóch miejsc po przecinku musi wynosić 3,15.
Matt Le Fleur,
Myślałem, że OP chce tylko zaokrąglić do dwóch miejsc po przecinku, w razie potrzeby zaokrąglając w górę lub w dół. Właśnie dodałem komentarz z prośbą o wyjaśnienie.
JAL,
Cześć Jal, Dziękuję, użyłem Twojej odpowiedzi, która działała z niewielką modyfikacją w następujący sposób: - _ = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)! railRatioLabelField.text! = String (format: "% .2f", currentRatio)
Del Hinds
2
To odpowiedź jest na pytanie: "Jak wyświetlić podwójne z dwiema cyframi w etykiecie tekstowej" lub "... jako ciąg znaków", ta odpowiedź nie odpowiada na pytanie "Zaokrąglij podwójnie do 2 miejsc po przecinku"
mnl
@JAL potrzebuję olny .5 lub 0 po punkcie Na przykład. jeśli mamy 23,4, to powinno dać 23,5, a jeśli 23,8, powinno to 24,0
guru
29
(Swift 4.2 Xcode 11)
Proste w użyciu rozszerzenie: -
Cześć - nie rozumiem, jak wykonujesz obliczenia pod kątem zwracania określonej liczby miejsc po przecinku. A jeśli chcę, aby zwracała 3 miejsce po przecinku?
Sipho Koza
@SiphoKoza po prostu pomnóż to przez 1000, a następnie podziel przez 1000
Chetan Rajagiri
To naprawdę nie jest „właściwa” odpowiedź, ponieważ wewnętrznie liczba jest zapisywana w postaci zmiennoprzecinkowej o podstawie 2, a próbujesz przedstawić liczbę o podstawie 10. W przypadku niektórych liczb nie ma dokładnej reprezentacji i skończysz ze zbyt dużą liczbą cyfr, gdy przejdziesz do wydrukowania wartości. Prawidłowa odpowiedź powinna zwrócić ciąg, a nie Double lub Float.
Victor Engel
@levan Działa również dla zera, tylko upewnij się, że jest podwójny
Chetan Rajagiri
1
Świetna odpowiedź, myślę, że to powinna być akceptowana.
אורי orihpt
13
Rozważ użycie NumberFormatter w tym celu, zapewnia większą elastyczność, jeśli chcesz wydrukować znak procentu współczynnika lub jeśli masz takie rzeczy, jak waluta i duże liczby.
currentRatio
do dwóch miejsc po przecinku, czy zawsze w górę? Np .: czy chcesz 3,141 -> 3,14 czy 3,141 -> 3,14?Odpowiedzi:
Użyj ciąg formatu zaokrąglić w górę do dwóch miejsc po przecinku i przekonwertować
double
DoString
:let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)! railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Przykład:
let myDouble = 3.141 let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Jeśli chcesz zaokrąglić ostatnie miejsce po przecinku, możesz zrobić coś takiego (dzięki Phoen1xUK):
let myDouble = 3.141 let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
źródło
(Swift 4.2 Xcode 11) Proste w użyciu rozszerzenie: -
extension Double { func round(to places: Int) -> Double { let divisor = pow(10.0, Double(places)) return (self * divisor).rounded() / divisor } }
Posługiwać się:-
if let distanceDb = Double(strDistance) { cell.lblDistance.text = "\(distanceDb.round(to:2)) km" }
źródło
func round(to places: Int) -> Double {
Zaktualizowano do SWIFT 4 i poprawną odpowiedź na pytanie
Jeśli chcesz zaokrąglić w górę do 2 miejsc po przecinku, pomnóż przez 100, zaokrąglij i podziel przez 100
var x = 1.5657676754 var y = (x*100).rounded()/100 print(y) // 1.57
źródło
Rozważ użycie NumberFormatter w tym celu, zapewnia większą elastyczność, jeśli chcesz wydrukować znak procentu współczynnika lub jeśli masz takie rzeczy, jak waluta i duże liczby.
let amount = 10.000001 let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 let formattedAmount = formatter.string(from: amount as NSNumber)! print(formattedAmount) // 10
źródło
Dodając do powyższej odpowiedzi, jeśli chcemy wielokrotnie formatować Double, możemy użyć rozszerzenia protokołu Double jak poniżej:
extension Double { var dollarString:String { return String(format: "$%.2f", self) } } let a = 45.666 print(a.dollarString) //will print "$45.67"
źródło
Kod dla określonych cyfr po przecinku to:
var roundedString = String(format: "%.2f", currentRatio)
Tutaj% .2f mówi swiftowi, aby zaokrąglił tę liczbę do 2 miejsc po przecinku.
źródło
@Rounded , szybkie opakowanie właściwości 5.1 Przykład:
struct GameResult { @Rounded(rule: NSDecimalNumber.RoundingMode.up,scale: 4) var score: Decimal } var result = GameResult() result.score = 3.14159265358979 print(result.score) // 3.1416
źródło
String(format: "%.2f", Double(round(1000*34.578)/1000))
Wyjście: 34,58
źródło
Tylko krótka odpowiedź dla noobów takich jak ja:
Możesz sprawić, że inne odpowiedzi będą bardzo łatwe do zaimplementowania, używając funkcji z wyjściem . Na przykład
func twoDecimals(number: Float) -> String{ return String(format: "%.2f", number) }
W ten sposób, gdy chcesz pobrać wartość do 2 miejsc po przecinku, po prostu wpiszesz
twoDecimals (' Twój numer tutaj ')
...
Simples!
Ps Możesz również sprawić, by zwracał wartość Float lub cokolwiek chcesz, konwertując ją ponownie po konwersji typu String w następujący sposób:
func twoDecimals(number: Float) -> Float{ let stringValue = String(format: "%.2f", number) return Float(stringValue)! }
Mam nadzieję, że to pomoże.
źródło
jeśli dasz 234,545332233, otrzymasz 234,54
let textData = Double(myTextField.text!)! let text = String(format: "%.2f", arguments: [textData]) mylabel.text = text
źródło
Tylko jedna linia kodu:
let obj = self.arrayResult[indexPath.row] let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
źródło