gpt4 book ai didi

swift - 转换函数以处理 Double 和 Float...使用 FloatingPoint 类型?

转载 作者:行者123 更新时间:2023-11-28 10:05:14 34 4
gpt4 key购买 nike

我在 SO 上看到过类似的问题,但它并没有回答我在这里提出的所有问题。

我有这样一个函数:

  func myFunctionDouble (_ valores:[Double] = []) -> Array<Double> {

let numeroItens = valores.count
var c = [Double](repeating: 0,
count: numeroItens)

let factor : Double = Double.pi / Double(numeroItens)

for i in 0..<numeroItens {
var sum : Double = 0
for j in 0..<numeroItens {
sum = sum + valores[j] * cos ((Double(j) + 0.5) * Double(i) * factor)
}
c[i] = sum
}
return c;
}

我想改造这个函数来处理 Double 和 Float。

我考虑过将 Double 替换为 FloatingPoint,但它根本行不通,并给我带来一堆错误。

没有FloatingPoint.pi 或数组c 不能这样声明

var c = [FloatingPoint](repeating: 0, count: numeroItens)

有办法吗?

除此之外,我如何将 var 或数组声明为 FloatingPoint 类型,我的意思是,接受 FloatDouble?

最佳答案

遵循 Rob's 中规定的示例回答How to use FloatingPoint generic type for Float/Double ,您可以执行以下操作:

import Darwin // minimal necessary import
// importing Foundation, AppKit or UIKit also implicitly import Darwin

protocol Cosineable {
func cosine() -> Self
}

extension Float: Cosineable {
func cosine() -> Float { return cos(self) }
}

extension Double: Cosineable {
func cosine() -> Double { return cos(self) }
}

func myFunction<T: FloatingPoint>(_ valores:[T] = []) -> Array<T> where T: ExpressibleByFloatLiteral, T: Cosineable {

let numeroItens = valores.count
var c = [T](repeating: 0,
count: numeroItens)

let factor : T = T.pi / T(numeroItens)

for i in 0..<numeroItens {
var sum : T = 0
for j in 0..<numeroItens {
sum += valores[j] * ((T(j) + 0.5) * T(i) * factor).cosine()
}
c[i] = sum
}
return c
}

关于swift - 转换函数以处理 Double 和 Float...使用 FloatingPoint 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859292/

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