我有以下代码将值舍入到任何最接近的数字:
func round(_ value: Double, toNearest nearest: Double) -> Double {
let roundedValue = round(value / nearest) * nearest
return roundedValue
}
但是,我收到以下投诉,因为我使用与内置版本相同的名称:
Missing argument for parameter 'toNearest' in call
有没有办法解决这个问题?即builtin round(value / nearest)
?
感谢。
答案 0 :(得分:1)
如下面的答案所示:
大多数Darwin / C舍入方法现在可以作为原生Swift方法使用,适用于符合FloatingPoint
的类型(例如Double
和Float
)。这意味着如果您使用与问题相同的逻辑设置实现自己的舍入方法,则可以使用rounded()
method of FloatingPoint
,它使用.toNearestOrAwayFromZero
舍入规则(如上所述)在链接的答案中)相当于Darwin / C round(...)
方法。
已应用于修改自定义round(_:toNearest:)
功能:
func round(_ value: Double, toNearest nearest: Double) -> Double {
return (value / nearest).rounded() * nearest
}
答案 1 :(得分:0)
为什么你需要相同的名字,你不能只是将它重命名为roundTo()
:p。
我相信你可以有两个同名的函数,只要它们有不同的类型或参数标签。尝试更改参数?