您的代码正在执行整数除法,将整数结果转换为双精度。相反,您要将这些单个整数转换为双精度,然后进行除法。所以,代替
let result = (Double(myInt! / lutning) * Double(pi))
你应该
let result = Double(myInt!) / Double(lutning) * Double(pi)
注意,Double
已经有一个.pi
常量,因此您可以删除pi
常量,并将以上内容简化为:
let result = Double(myInt!) / Double(lutning) * .pi
就个人而言,我会定义myInt
并lutning
是Double
从一开始去(而且,虽然我们在这,删除所有强制解包的(用!
)的自选的):
guard
let text = graderna.text,
let text2 = radien.text,
let value = Double(text),
let value2 = Double(text2)
else {
return
}
let lutning: Double = 360
let result = value / lutning * .pi
或者,您可以flatMap
用来安全地解开那些可选的字符串:
guard
let value = graderna.text.flatMap({ Double($0) }),
let value2 = radien.text.flatMap({ Double($0) })
else {
return
}
let lutning: Double = 360
let result = value / lutning * .pi
(顺便说一句,如果要在弧度和度之间进行转换,则应为2π/ 360,而不是π/ 360。)