我正在尝试使用不同的方程式和公式制作数学应用程序,但我想尝试将扇区划分,但我只是想尝试将输入值除以360但是当我这样做时它只会说0除非值已经超过360.我尝试过使用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)"
}
答案 0 :(得分:2)
您的代码执行整数除法,取整数结果并将其转换为double。相反,您希望将这些单个整数转换为双精度,然后进行除法。例如。
let myInt = Int(graderna.text!)
let myInt2 = Int(radien.text!)
if let realInt = myInt, realInt2 = myInt2 {
let pi = 3.1415926
let lutning = 360.0
let result = Double (realInt) * (pi / lutning)
svar2.text = "\(result)"
}
或定义
let result = Double(myInt!) / Double(lutning) * pi
然后
let lutning = 360.0
而且,顺便说一下,我建议使用let result = Double(myInt!) / lutning * pi
而不是定义自己的M_PI
。
pi
答案 1 :(得分:1)
您正在将Int划分为Int。
整数除法向最接近的整数舍入为零。因此,例如359/360不是接近1的数字,它是0. 360/360到719/360等于1. 720/360到1079/360等于2,依此类推。
但你对选项的使用是残酷的。我写了
url(r'^$', name.of.the.view),
答案 2 :(得分:0)
在let result = (Double(myInt! / lutning) * Double(pi))
行中,您在分割两个整数后将类型转换为double
,这样您的结果将始终为零。你必须在分裂之前让它们加倍。
let result = (Double(myInt!) / Double(lutning)) * Double(pi))