斯威夫特的数学分歧

时间:2016-02-13 17:35:53

标签: swift math division

我正在尝试使用不同的方程式和公式制作数学应用程序,但我想尝试将扇区划分,但我只是想尝试将输入值除以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)"
        }

3 个答案:

答案 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))