2015-07-04 6 views
11

Ich versuche, ein Doppel bis auf eine ganze Zahl abzurunden,Swift Aufrunden Doppel

var numberOfBottles = totalVolume/volumeEachBottles 

zum Beispiel numberOfBottles = 275.0/250.0 , die mich 1.1 geben würde, muss ich es 2 aufrunden

+0

Wollen Sie die Int 2 oder die Doppel 2.0? – BallpointBen

Antwort

-4
func round(value: Double) -> Int { 
    var d : Double = value - Double(Int(value)) 
    if d > 0.0 { 
     return Int(value) + 1 
    } else { 
     return Int(value) 
    } 
} 
+0

Dies wandelt das Ergebnis in ein Int um. Es ist unklar, ob dies erforderlich ist. – nhgrif

+0

Was bedeutet "ganz" in Ihrem Wörterbuch? – NiVeR

+0

Was ist, wenn wir den Wert in eine Methode übergeben, die ein 'Double' erwartet oder auf eine' Double' Eigenschaft setzt. In ein 'Int' zu konvertieren, nur um wieder in ein' Double' zu ​​konvertieren, ist kein sehr guter Pfad. – nhgrif

10

Es gibt eine integrierte globale Funktion namens ceil, die genau das tut:

var numberOfBottles = ceil(totalVolume/volumeEachBottles) 

Dies gibt 2 als Double zurück.

enter image description here

ceil tatsächlich in math.h erklärt und dokumentiert here in the OS X man pages. Es ist fast sicher effizienter als jeder andere Ansatz.

Auch wenn Sie ein Int als Endergebnis brauchen, würde ich durch die Berechnung ceil wie diese starten, und dann mit dem Int Konstruktor auf dem Ergebnis der Berechnung ceil.

+0

Es ist nicht integriert, Sie müssen "Foundation importieren", um es zu verwenden. – BallpointBen

18

Versuchen:

var numberOfBottles = totalVolume/volumeEachBottles 
numberOfBottles.rounded(.up) 

oder

numberOfBottles.rounded(.down) 
1
import Foundation 

var numberOfBottles = 275.0/250.0 
var rounded = ceil(numberOfBottles)