mirror of
https://github.com/SimpleMobileTools/Simple-Calculator.git
synced 2025-06-05 21:49:13 +02:00
removing some old redundant operations
This commit is contained in:
@ -2,7 +2,6 @@ package com.simplemobiletools.calculator.helpers
|
||||
|
||||
import android.content.Context
|
||||
import com.simplemobiletools.calculator.R
|
||||
import com.simplemobiletools.calculator.operation.PercentOperation
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import net.objecthunter.exp4j.ExpressionBuilder
|
||||
|
||||
@ -106,8 +105,7 @@ class CalculatorImpl(calculator: Calculator, private val context: Context) {
|
||||
|
||||
// handle percents manually, it doesn't seem to be possible via net.objecthunter:exp4j. "%" is used only for modulo there
|
||||
private fun handlePercent() {
|
||||
val operation = PercentOperation(baseValue, getSecondValue(), lastOperation)
|
||||
val result = operation.getResult()
|
||||
val result = calculatePercentage(baseValue, getSecondValue(), lastOperation)
|
||||
showNewFormula("${baseValue.format()}${getSign(lastOperation)}${getSecondValue().format()}%")
|
||||
inputDisplayedFormula = result.format()
|
||||
showNewResult(result.format())
|
||||
@ -168,6 +166,28 @@ class CalculatorImpl(calculator: Calculator, private val context: Context) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun calculatePercentage(baseValue: Double, secondValue: Double, sign: String): Double {
|
||||
return when (sign) {
|
||||
MULTIPLY -> {
|
||||
val partial = 100 / secondValue
|
||||
baseValue / partial
|
||||
}
|
||||
DIVIDE -> {
|
||||
val partial = 100 / secondValue
|
||||
baseValue * partial
|
||||
}
|
||||
PLUS -> {
|
||||
val partial = baseValue / (100 / secondValue)
|
||||
baseValue.plus(partial)
|
||||
}
|
||||
MINUS -> {
|
||||
val partial = baseValue / (100 / secondValue)
|
||||
baseValue.minus(partial)
|
||||
}
|
||||
else -> baseValue / (100 * secondValue)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showNewResult(value: String) {
|
||||
callback!!.showNewResult(value, context)
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
class DivideOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult() = baseValue / secondValue
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
class MinusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult() = baseValue - secondValue
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
class MultiplyOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult() = baseValue * secondValue
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.helpers.*
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
object OperationFactory {
|
||||
|
||||
fun forId(id: String, baseValue: Double, secondValue: Double): Operation? {
|
||||
return when (id) {
|
||||
PLUS -> PlusOperation(baseValue, secondValue)
|
||||
MINUS -> MinusOperation(baseValue, secondValue)
|
||||
DIVIDE -> DivideOperation(baseValue, secondValue)
|
||||
MULTIPLY -> MultiplyOperation(baseValue, secondValue)
|
||||
POWER -> PowerOperation(baseValue, secondValue)
|
||||
ROOT -> RootOperation(baseValue, secondValue)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.helpers.DIVIDE
|
||||
import com.simplemobiletools.calculator.helpers.MINUS
|
||||
import com.simplemobiletools.calculator.helpers.MULTIPLY
|
||||
import com.simplemobiletools.calculator.helpers.PLUS
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
class PercentOperation(baseValue: Double, secondValue: Double, val sign: String) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult(): Double {
|
||||
return when (sign) {
|
||||
MULTIPLY -> {
|
||||
val partial = 100 / secondValue
|
||||
baseValue / partial
|
||||
}
|
||||
DIVIDE -> {
|
||||
val partial = 100 / secondValue
|
||||
baseValue * partial
|
||||
}
|
||||
PLUS -> {
|
||||
val partial = baseValue / (100 / secondValue)
|
||||
baseValue.plus(partial)
|
||||
}
|
||||
MINUS -> {
|
||||
val partial = baseValue / (100 / secondValue)
|
||||
baseValue.minus(partial)
|
||||
}
|
||||
else -> {
|
||||
baseValue / (100 * secondValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
|
||||
class PlusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult() = baseValue + secondValue
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
import kotlin.math.pow
|
||||
|
||||
class PowerOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult(): Double {
|
||||
val result = baseValue.pow(secondValue)
|
||||
|
||||
return if (java.lang.Double.isInfinite(result) || java.lang.Double.isNaN(result))
|
||||
0.0
|
||||
else {
|
||||
result
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation
|
||||
|
||||
import com.simplemobiletools.calculator.operation.base.BinaryOperation
|
||||
import com.simplemobiletools.calculator.operation.base.Operation
|
||||
import kotlin.math.sqrt
|
||||
|
||||
class RootOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
|
||||
|
||||
override fun getResult() = sqrt(secondValue) * baseValue
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation.base
|
||||
|
||||
open class BinaryOperation protected constructor(protected val baseValue: Double, protected val secondValue: Double)
|
@ -1,5 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation.base
|
||||
|
||||
interface Operation {
|
||||
fun getResult(): Double
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package com.simplemobiletools.calculator.operation.base
|
||||
|
||||
import java.math.BigDecimal
|
||||
|
||||
open class UnaryOperation protected constructor(protected var value: BigDecimal)
|
Reference in New Issue
Block a user