2009-05-19 6 views
40

Ich möchte eine Zahl in Ruby (auf Schienen) "verschließen".Wie man die Zahl in Ruby kappt und rundet

Zum Beispiel habe ich, als Ergebnis einer Funktion, ein float, aber ich brauche ein int.

Ich habe sehr spezifische Anweisungen, hier einige Beispiele:

Wenn ich 1.5 Ich will 2 bekommen, aber wenn ich 2.0 erhalte ich will 2 (und nicht 3)

number.round(0) + 1 Doing wird nicht funktionieren.

Ich könnte eine Funktion schreiben, um dies zu tun, aber ich bin sicher, dass es einen bereits gibt.

Wenn es dennoch nicht existiert, wo soll ich meine Cap-Funktion erstellen?

Antwort

78

Versuchen ceil:

1.5.ceil => 2 
2.0.ceil => 2 
+7

1.1.ceil => 2 (ein weiteres Beispiel) – Patrick

11

Wie wäre es mit number.ceil?

Dies gibt die kleinste Ganzzahl größer oder gleich der Zahl zurück.

Seien Sie vorsichtig, wenn Sie diese mit negativen Zahlen verwenden, stellen Sie sicher, dass es das tut, was Sie erwarten:

1.5.ceil  #=> 2 
2.0.ceil  #=> 2 
(-1.5).ceil #=> -1 
(-2.0).ceil #=> -2 
6

Verwendung Numeric#ceil:

irb(main):001:0> 1.5.ceil 
=> 2 
irb(main):002:0> 2.0.ceil 
=> 2 
irb(main):003:0> 1.ceil 
=> 1 
2

float.ceil ist, was Sie für positive Zahlen wollen. Achten Sie darauf, das Verhalten für negative Zahlen zu berücksichtigen. Willst du -1.5 zu "-1" oder "-2"?

11

.ceil ist gut, aber denken Sie daran, auch kleinste Wert in float führt dies:

a = 17.00000000000002 
17.0 
a.ceil 
18 
Verwandte Themen