2015-06-05 7 views
8

to w Swift (1,2)format string z zerami usuniętych miejsc po przecinku w x Swift

let doubleValue1 = Double(10.116983123) 
println(String(format: "%.2f", doubleValue1)) 

let doubleValue2 = Double(10.0) 
println(String(format: "%.2f", doubleValue2)) 

Drukuje

10.12 
10.00 

szukam sposób użyciu formatowania lub bezpośredni format ciągów, a nie za pomocą operacji na ciągach, aby usunąć końcowe zera, aby wydrukować:

10.12 
10 

Najbliżej mam to:

let doubleValue3 = Double(10.0) 
println(String(format: "%.4g", doubleValue3)) 

Ale g używa cyfr znaczących, co oznacza, że ​​będę musiał obliczyć moje dziesiętnych cyfr oddzielnie. To brzmi jak brzydkie rozwiązanie.

Demo: http://swiftstub.com/651566091/

Jakieś pomysły? tia.

+2

To pytanie zostało fachowo odebrane wczoraj w tym znakomitym wpisie od Martin'a R: http://stackoverflow.com/questions/30621338/formatting-decimal-places-with-unknown-number/30622335#30622335 – simons

+0

wczoraj? niesamowity :) – ericosg

Odpowiedz

21

Musisz użyć NumberFormatter:

let formatter = NumberFormatter() 
    formatter.minimumFractionDigits = 0 
    formatter.maximumFractionDigits = 2 
    print(formatter.string(from: 1.0000) ?? "") 
    print(formatter.string(from: 1.2345) ?? "") 

Ten przykład wydrukować 1 w pierwszym przypadku i 1,23 za drugim; liczba minimalnych i maksymalnych miejsc po przecinku może być dostosowywana według potrzeb.

Mam nadzieję, że to pomoże!