RPN计算器(Swift xcode)-正弦、余弦、正切、倒数(1/x)、对数(基本)函数

RPN计算器(Swift xcode)-正弦、余弦、正切、倒数(1/x)、对数(基本)函数,swift,math,rpn,Swift,Math,Rpn,我已经用Swift构建了一个基本的RPN计算器,我需要添加这些函数:正弦、余弦、切线、倒数(1/x)、对数(基本)和对数(基本10)。 以下是我为基本操作编写的代码: import Foundation import UIKit class CalculatorEngine: NSObject { var operandStack = Array<Double>() //array func updateStackWithValue(value: Double)

我已经用Swift构建了一个基本的RPN计算器,我需要添加这些函数:正弦、余弦、切线、倒数(1/x)、对数(基本)和对数(基本10)。 以下是我为基本操作编写的代码:

import Foundation
import UIKit

class CalculatorEngine: NSObject
{
    var operandStack = Array<Double>() //array

    func updateStackWithValue(value: Double)
    { self.operandStack.append(value) }

    func operate(operation: String) ->Double
    { switch operation

    {

    case "×":
        if operandStack.count >= 2 {
            return self.operandStack.removeLast() * self.operandStack.removeLast()
        }


    case "÷":
        if operandStack.count >= 2 {
            return self.operandStack.removeFirst() / self.operandStack.removeLast()
        }


    case "+":
        if operandStack.count >= 2 {
            return self.operandStack.removeLast() + self.operandStack.removeLast()
        }

    case "−":
        if operandStack.count >= 2 {
            return self.operandStack.removeFirst() - self.operandStack.removeLast()
        }

    case "√":
        if operandStack.count >= 1 {
            return sqrt(self.operandStack.removeLast())
        }

    default:break
        }
        return 0.0
    }
<代码>导入基础 导入UIKit 类CalculatorEngine:NSObject { var operandStack=Array()//数组 func updateStackWithValue(值:双精度) {self.operandStack.append(value)} func操作(操作:字符串)->Double {开关操作 { 案例“×”: 如果操作数Stack.count>=2{ 返回self.operanstack.removeLast()*self.operanstack.removeLast() } 案例“÷”: 如果操作数Stack.count>=2{ 返回self.operanstack.removeFirst()/self.operanstack.removeLast() } 格“+”: 如果操作数Stack.count>=2{ 返回self.operanstack.removeLast()+self.operanstack.removeLast() } 案例”−": 如果操作数Stack.count>=2{ 返回self.operanstack.removeFirst()-self.operanstack.removeLast() } 案例”√": 如果操作数Stack.count>=1{ 返回sqrt(self.operanstack.removeLast()) } 默认值:中断 } 返回0.0 }
这是Swift中这些基本函数的一个实现。我将让您将其放入RPN计算器中,因为这是您的任务

内置的trig函数需要输入弧度,因此必须通过乘以
pi
并除以
180.0
进行转换

func sine(degrees: Double) -> Double {
    return sin(degrees * M_PI / 180)
}

func cosine(degrees: Double) -> Double {
    return cos(degrees * M_PI / 180)
}

func tangent(degrees: Double) -> Double {
    return tan(degrees * M_PI / 180)
}

func log(n: Double, base: Double) -> Double {
    return log(n) / log(base)
}

func reciprocal(n: Double) -> Double {
    return 1.0 / n
}

对于log(base 10),只需使用内置的
log10(n:Double)->Double

,这是一个数学问题,不是编程问题,但基本操作是什么。因为当我输入case“sin”:if operanstack.count>=1{返回sin(self.operanstack.removeLast())}它不会给我与基本计算器相同的结果,所以我不认为它是我使用的正确函数,但我不知道使用哪一个。什么?你接受弧度而不是度吗?