Swift中的数学除法

我正在尝试使用不同的方程式和公式制作一个数学应用程序,但是我试图圈出一个扇形,但是我只是想尝试将输入值除以360,但是当我这样做时,除非值超过360,否则它只会显示0。我试过使用String,Double和Float,但没有运气,我不知道我在做什么是错误的,但是下面是代码。我很感谢您的帮助,但是我已经坐了一会儿,并且在网上搜索了答案,但是没有结果,这可能是我搜索错误的结果。

if graderna.text == ""{

}

else{

var myInt: Int? = Int(graderna.text!) // conversion of string to Int

var myInt2: Int? = Int(radien.text!)

let pi = 3.1415926

let lutning = 360

let result = (Double(myInt! / lutning) * Double(pi))

svar2.text = "\(result)"

}

回答:

您的代码正在执行整数除法,将整数结果转换为双精度。相反,您要将这些单个整数转换为双精度,然后进行除法。所以,代替

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

就个人而言,我会定义myIntlutningDouble从一开始去(而且,虽然我们在这,删除所有强制解包的(用!)的自选的):

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。)

以上是 Swift中的数学除法 的全部内容, 来源链接: utcz.com/qa/429323.html

回到顶部