gpt4 book ai didi

swift - 在 swift 中将 Double 分解为符号、尾数和指数 : check my work

转载 作者:行者123 更新时间:2023-11-30 13:25:47 26 4
gpt4 key购买 nike

我在下面的 Double 中添加了这个扩展,以便在 Swift 中将 Double 分解为整数尾数和指数。我已经测试了它的许多值,包括 DBL_MAX 和 -DBL_MAX。我的问题是:(1) 是否有内置方法或函数已经执行此操作? (2) 对于所有环境、所有 double 来说,这是否正确?有什么办法可以让它失败吗? (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)
}
}

最佳答案

据我所知,这应该很容易,但它不起作用,

浮点协议(protocol),定义为https://github.com/apple/swift/blob/master/stdlib/public/core/FloatingPoint.swift.gyb ,Double 结构体所遵守的已经定义了一个指数和一个尾数变量(分别在第 207 行和第 231 行)。

以及 Double 结构 https://github.com/apple/swift/blob/master/stdlib/public/core/FloatingPointTypes.swift.gyb ,在第 389 行定义指数,在第 398 行定义有效数。

关于swift - 在 swift 中将 Double 分解为符号、尾数和指数 : check my work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com