2015-07-04 15 views
11

tôi đang cố gắng để làm tròn một đôi lên đến một số nguyên,Swift làm tròn lên đúp

var numberOfBottles = totalVolume/volumeEachBottles 

ví dụ numberOfBottles = 275.0/250.0 rằng sẽ cho tôi 1.1, tôi cần nó để làm tròn lên đến 2

+0

Bạn muốn Int 2 hoặc Double 2.0? – BallpointBen

Trả lời

-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

Điều này chuyển đổi kết quả thành 'Int'. Nó không rõ ràng nếu đây là những gì là cần thiết. – nhgrif

+0

Ý nghĩa của 'toàn bộ' trong từ điển của bạn là gì? – NiVeR

+0

Điều gì sẽ xảy ra nếu chúng ta chuyển giá trị vào một phương thức mong đợi một 'Double' hoặc đặt nó thành thuộc tính' Double'. Chuyển đổi thành một 'Int' chỉ để chuyển đổi về một' Double' không phải là một con đường rất tốt. – nhgrif

10

Có chức năng toàn cầu tích hợp được gọi là ceil thực hiện chính xác điều này:

var numberOfBottles = ceil(totalVolume/volumeEachBottles) 

Điều này trả lại 2, dưới dạng Double.

enter image description here

ceil là thực sự khai báo trong math.h và tài liệu here in the OS X man pages. Nó gần như chắc chắn hiệu quả hơn bất kỳ cách tiếp cận nào khác.

Thậm chí nếu bạn cần một Int như kết quả cuối cùng của bạn, tôi sẽ bắt đầu bằng cách tính toán ceil như thế này, và sau đó sử dụng các nhà xây dựng Int trên là kết quả của việc tính toán ceil.

+0

Nó không được tích hợp sẵn, bạn phải 'import Foundation' để sử dụng nó. – BallpointBen

18

Hãy thử:

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

hoặc

numberOfBottles.rounded(.down) 
1
import Foundation 

var numberOfBottles = 275.0/250.0 
var rounded = ceil(numberOfBottles) 
Các vấn đề liên quan