【发布时间】:2016-05-13 15:50:40
【问题描述】:
我在下面的 Double 中添加了这个扩展,以便在 Swift 中将 Double 分解为整数尾数和指数。我已经测试了它的许多值,包括 DBL_MAX 和 -DBL_MAX。我的问题是: (1) 在某处是否有内置方法或函数已经这样做了? (2) 对于所有环境,所有双打都正确吗?有什么方法可以失败吗? (3) 有没有办法让它更高效但仍然便携?
感谢您的建议。
extension Double {
func decomp () -> (mantissa:Int64,exponent:Int64) {
var (a,b) = frexp(self)
var exponent = Int64(b)
while floor(a) != a {
a *= 2
exponent--
}
let mantissa = Int64(floor(a))
return (mantissa, exponent)
}
}
【问题讨论】:
标签: swift floating-point double