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
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
func round(value: Double) -> Int {
var d : Double = value - Double(Int(value))
if d > 0.0 {
return Int(value) + 1
} else {
return Int(value)
}
}
Đ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
Ý nghĩa của 'toàn bộ' trong từ điển của bạn là gì? – NiVeR
Đ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
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
.
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
.
Nó không được tích hợp sẵn, bạn phải 'import Foundation' để sử dụng nó. – BallpointBen
Hãy thử:
var numberOfBottles = totalVolume/volumeEachBottles
numberOfBottles.rounded(.up)
hoặc
numberOfBottles.rounded(.down)
import Foundation
var numberOfBottles = 275.0/250.0
var rounded = ceil(numberOfBottles)
Bạn muốn Int 2 hoặc Double 2.0? – BallpointBen