用Swift和round()四舍五入
在玩的时候,我在swift中找到了round()函数。可按如下方式使用:用Swift和round()四舍五入,swift,xcode6,rounding,Swift,Xcode6,Rounding,在玩的时候,我在swift中找到了round()函数。可按如下方式使用: round(0.8) 它将返回1,如预期的那样。我的问题是: 如何在swift中以千分之一的速度旋转? 我希望能够插入一个数字,比如说0.6849,然后返回0.685。round()是如何做到这一点的?或者,在这种情况下,它不是有什么功能吗?您可以执行以下操作: round(1000 * x) / 1000 这里有一个方法。您可以轻松地为Float执行此操作,或者可能将其设置为通用的,以便适用于其中任何一种 publi
round(0.8)
它将返回1,如预期的那样。我的问题是:
如何在swift中以千分之一的速度旋转?
我希望能够插入一个数字,比如说0.6849,然后返回0.685。round()是如何做到这一点的?或者,在这种情况下,它不是有什么功能吗?您可以执行以下操作:
round(1000 * x) / 1000
这里有一个方法。您可以轻松地为
Float
执行此操作,或者可能将其设置为通用的,以便适用于其中任何一种
public extension CGFloat {
func roundToDecimals(decimals: Int = 2) -> CGFloat {
let multiplier = CGFloat(10^decimals)
return round(multiplier * self) / multiplier
}
}
这将四舍五入到任何不受10次幂限制的值
extension Double {
func roundToNearestValue(value: Double) -> Double {
let remainder = self % value
let shouldRoundUp = remainder >= value/2 ? true : false
let multiple = floor(self / value)
let returnValue = !shouldRoundUp ? value * multiple : value * multiple + value
return returnValue
}
}
最新答案
四舍五入(someDecimal)
是旧的C风格。从Swift 3开始,双打和浮标具有内置的Swift功能
var x = 0.8
x.round() // x is 1.0 (rounds x in place)
或
有关如何使用差异的更多详细信息,请参见我的答案(或)
正如其他答案所指出的,如果你想四舍五入到第千位,那么在四舍五入之前,先暂时乘以1000
。Swift 4:
(x/1000).rounded()*1000
请看一看苹果的和文档 输出:
1.23
您得到的输出是字符串类型。因此,如果需要,您需要转换为其他类型。下面的链接告诉您如何转换:
round(1000*x)/1000
在最简单的情况下,使用round(x*1000)/1000
。另请参阅使用NSDecimalNumber
,NSNumberFormatter
,字符串初始值设定项
,等查找双精度整数的其他方法。`static func round_pow_2(value:CGFloat,decimalPlaces:CGFloat)->CGFloat{let decimalValue=pow(2.0,decimalPlaces)返回舍入(value*decimalValue)/decimalValue}`可能只是我,但该函数没有多大意义?为SWIFT 3更新:someval.rounded()
10^decimal执行按位异或运算。应将其替换为pow或应使用powf。如果原始问题中给出的x
为0.6849,则该值为0。应该是(x*1000)。rounded()/1000
欢迎链接到解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。
(x/1000).rounded()*1000
var a=1.2344
var b:String = String(format: "%0.2f",a)
print(b)
1.23