diff --git a/README.md b/README.md
index b4306567..7caa3346 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ This app is just one piece of a bigger series of apps. You can find the rest of
-
+
It contains a couple UI and unit tests, they can be ran with the following instructions.
Running Espresso UI tests
diff --git a/app/src/androidTest/java/com/simplemobiletools/calculator/MainActivityTest.java b/app/src/androidTest/java/com/simplemobiletools/calculator/MainActivityTest.java
index 67286c51..001b9b0e 100644
--- a/app/src/androidTest/java/com/simplemobiletools/calculator/MainActivityTest.java
+++ b/app/src/androidTest/java/com/simplemobiletools/calculator/MainActivityTest.java
@@ -1,7 +1,7 @@
package com.simplemobiletools.calculator;
import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.simplemobiletools.calculator.activities.MainActivity;
diff --git a/app/src/androidTest/java/com/simplemobiletools/calculator/PercentTests.kt b/app/src/androidTest/java/com/simplemobiletools/calculator/PercentTests.kt
index 0b742148..8987499a 100644
--- a/app/src/androidTest/java/com/simplemobiletools/calculator/PercentTests.kt
+++ b/app/src/androidTest/java/com/simplemobiletools/calculator/PercentTests.kt
@@ -6,7 +6,7 @@ import androidx.test.espresso.assertion.ViewAssertions
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.rule.ActivityTestRule
-import androidx.test.runner.AndroidJUnit4
+import androidx.test.ext.junit.runners.AndroidJUnit4
import com.simplemobiletools.calculator.activities.MainActivity
import org.junit.Rule
import org.junit.Test
@@ -74,11 +74,11 @@ class PercentTests {
}
private fun press(id: Int) {
- Espresso.onView(ViewMatchers.withId(id)).perform(ViewActions.click())
+ Espresso.onView(withId(id)).perform(ViewActions.click())
}
private fun longPress(id: Int) {
- Espresso.onView(ViewMatchers.withId(id)).perform(ViewActions.longClick())
+ Espresso.onView(withId(id)).perform(ViewActions.longClick())
}
private fun checkResult(desired: String) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 11aa583f..61781fb3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
android:installLocation="auto">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt
index c9d3ecb0..0bbf97b7 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt
@@ -7,11 +7,11 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.WindowManager
-import com.simplemobiletools.calculator.BuildConfig
import com.simplemobiletools.calculator.R
import com.simplemobiletools.calculator.extensions.config
import com.simplemobiletools.calculator.extensions.updateViewColors
import com.simplemobiletools.calculator.helpers.*
+import com.simplemobiletools.calculator.BuildConfig
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LICENSE_AUTOFITTEXTVIEW
import com.simplemobiletools.commons.helpers.LICENSE_ESPRESSO
@@ -20,6 +20,7 @@ import com.simplemobiletools.commons.models.FAQItem
import com.simplemobiletools.commons.models.Release
import kotlinx.android.synthetic.main.activity_main.*
import me.grantland.widget.AutofitHelper
+import java.math.BigDecimal
class MainActivity : SimpleActivity(), Calculator {
private var storedTextColor = 0
@@ -155,8 +156,8 @@ class MainActivity : SimpleActivity(), Calculator {
}
// used only by Robolectric
- override fun setValueDouble(d: Double) {
- calc.setValue(Formatter.doubleToString(d))
+ override fun setValueBigDecimal(d: BigDecimal) {
+ calc.setValue(Formatter.bigDecimalToString(d))
calc.lastKey = DIGIT
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/SettingsActivity.kt
index 84161b5e..05e24f7d 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/SettingsActivity.kt
@@ -11,6 +11,7 @@ import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
import kotlinx.android.synthetic.main.activity_settings.*
import java.util.*
+import kotlin.system.exitProcess
class SettingsActivity : SimpleActivity() {
@@ -50,7 +51,7 @@ class SettingsActivity : SimpleActivity() {
settings_use_english_holder.setOnClickListener {
settings_use_english.toggle()
config.useEnglish = settings_use_english.isChecked
- System.exit(0)
+ exitProcess(0)
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Calculator.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Calculator.kt
index 1ad20b9f..3fa73431 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Calculator.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Calculator.kt
@@ -1,11 +1,12 @@
package com.simplemobiletools.calculator.helpers
import android.content.Context
+import java.math.BigDecimal
interface Calculator {
fun setValue(value: String, context: Context)
- fun setValueDouble(d: Double)
+ fun setValueBigDecimal(d: BigDecimal)
fun setFormula(value: String, context: Context)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt
index afa69f75..c009db1d 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt
@@ -5,6 +5,7 @@ import android.util.Log
import com.simplemobiletools.calculator.R
import com.simplemobiletools.calculator.operation.OperationFactory
import com.simplemobiletools.commons.extensions.toast
+import java.math.BigDecimal
class CalculatorImpl(calculator: Calculator, val context: Context) {
var displayedNumber: String? = null
@@ -15,8 +16,8 @@ class CalculatorImpl(calculator: Calculator, val context: Context) {
private var isFirstOperation = false
private var resetValue = false
- private var baseValue = 0.0
- private var secondValue = 0.0
+ private var baseValue: BigDecimal = BigDecimal.ZERO
+ private var secondValue: BigDecimal = BigDecimal.ZERO
init {
resetValues()
@@ -32,8 +33,8 @@ class CalculatorImpl(calculator: Calculator, val context: Context) {
}
private fun resetValues() {
- baseValue = 0.0
- secondValue = 0.0
+ baseValue = BigDecimal.ZERO
+ secondValue = BigDecimal.ZERO
resetValue = false
lastOperation = ""
displayedNumber = ""
@@ -61,7 +62,7 @@ class CalculatorImpl(calculator: Calculator, val context: Context) {
sign == "√" -> setFormula(sign + first)
sign == "!" -> setFormula(first + sign)
sign.isNotEmpty() -> {
- if (secondValue == 0.0 && sign == "/") {
+ if (secondValue.compareTo(BigDecimal.ZERO) == 0 && sign == "/") {
context.toast(context.getString(R.string.formula_divide_by_zero_error))
}
@@ -83,16 +84,16 @@ class CalculatorImpl(calculator: Calculator, val context: Context) {
return str
}
- val doubleValue = Formatter.stringToDouble(str)
+ val doubleValue = Formatter.stringToBigDecimal(str)
return doubleValue.format()
}
- private fun updateResult(value: Double) {
+ private fun updateResult(value: BigDecimal) {
setValue(value.format())
baseValue = value
}
- private fun getDisplayedNumberAsDouble() = Formatter.stringToDouble(displayedNumber!!)
+ private fun getDisplayedNumberAsDouble() = Formatter.stringToBigDecimal(displayedNumber!!)
fun handleResult() {
secondValue = getDisplayedNumberAsDouble()
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Formatter.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Formatter.kt
index c98fb297..f7941ea0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Formatter.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/Formatter.kt
@@ -1,23 +1,24 @@
package com.simplemobiletools.calculator.helpers
+import java.math.BigDecimal
import java.text.DecimalFormat
import java.text.DecimalFormatSymbols
import java.util.*
object Formatter {
- fun doubleToString(d: Double): String {
+ fun bigDecimalToString(d: BigDecimal): String {
val symbols = DecimalFormatSymbols(Locale.US)
symbols.decimalSeparator = '.'
symbols.groupingSeparator = ','
val formatter = DecimalFormat()
- formatter.maximumFractionDigits = 12
+ formatter.maximumFractionDigits = 50
formatter.decimalFormatSymbols = symbols
formatter.isGroupingUsed = true
return formatter.format(d)
}
- fun stringToDouble(str: String) = str.replace(",", "").toDouble()
+ fun stringToBigDecimal(str: String): BigDecimal = BigDecimal(str.replace(",", ""))
}
-fun Double.format(): String = Formatter.doubleToString(this)
+fun BigDecimal.format(): String = Formatter.bigDecimalToString(this)
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/MyWidgetProvider.kt
index d7ab0d60..51a056a6 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/MyWidgetProvider.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/MyWidgetProvider.kt
@@ -12,8 +12,8 @@ import com.simplemobiletools.calculator.R
import com.simplemobiletools.calculator.activities.MainActivity
import com.simplemobiletools.calculator.extensions.config
import com.simplemobiletools.commons.extensions.applyColorFilter
-import com.simplemobiletools.commons.extensions.setBackgroundColor
import com.simplemobiletools.commons.extensions.setText
+import java.math.BigDecimal
class MyWidgetProvider : AppWidgetProvider(), Calculator {
companion object {
@@ -85,8 +85,7 @@ class MyWidgetProvider : AppWidgetProvider(), Calculator {
}
override fun onReceive(context: Context, intent: Intent) {
- val action = intent.action
- when (action) {
+ when (val action = intent.action) {
DECIMAL, ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, EQUALS, CLEAR, RESET, PLUS, MINUS, MULTIPLY, DIVIDE, PERCENT, POWER, ROOT, FACTORIAL -> myAction(action, context)
else -> super.onReceive(context, intent)
}
@@ -125,7 +124,7 @@ class MyWidgetProvider : AppWidgetProvider(), Calculator {
}
}
- override fun setValueDouble(d: Double) {
+ override fun setValueBigDecimal(d: BigDecimal) {
}
override fun setFormula(value: String, context: Context) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt
index f11eb0d5..30354a2e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt
@@ -2,14 +2,16 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
+import java.math.MathContext.DECIMAL128
-class DivideOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class DivideOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult(): Double {
- var result = 0.0
- if (secondValue != 0.0) {
- result = baseValue / secondValue
+ override fun getResult(): BigDecimal {
+ return if (secondValue.compareTo(BigDecimal.ZERO) == 0) {
+ BigDecimal.ZERO
+ } else {
+ baseValue.divide(secondValue, DECIMAL128)
}
- return result
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/FactorialOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/FactorialOperation.kt
index d8be339a..31907500 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/FactorialOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/FactorialOperation.kt
@@ -2,19 +2,20 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.Operation
import com.simplemobiletools.calculator.operation.base.UnaryOperation
+import java.math.BigDecimal
-class FactorialOperation(value: Double) : UnaryOperation(value), Operation {
+class FactorialOperation(value: BigDecimal) : UnaryOperation(value), Operation {
- override fun getResult(): Double{
- var result = 1.0
- if (value==0.0 || value==1.0){
- return result
- }else{
- var base = value.toInt()
+ override fun getResult(): BigDecimal {
+ return if (value.compareTo(BigDecimal.ZERO) == 0 || value.compareTo(BigDecimal.ONE) == 0 ){
+ BigDecimal.ONE
+ } else{
+ var result = BigDecimal.ONE
+ val base = value.toInt()
for(i in 1..base){
- result *= i
+ result = result.multiply(BigDecimal(i))
}
+ result
}
- return result
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt
index e79e2896..fec5bae1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt
@@ -2,8 +2,9 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
-class MinusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class MinusOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult() = baseValue - secondValue
+ override fun getResult(): BigDecimal = baseValue.subtract(secondValue)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt
index e9fe57a1..e2de9700 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt
@@ -2,8 +2,9 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
-class MultiplyOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class MultiplyOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult() = baseValue * secondValue
+ override fun getResult(): BigDecimal = baseValue.multiply(secondValue)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt
index 091aa4f7..7a66676f 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt
@@ -2,10 +2,11 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.helpers.*
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
object OperationFactory {
- fun forId(id: String, baseValue: Double, secondValue: Double): Operation? {
+ fun forId(id: String, baseValue: BigDecimal, secondValue: BigDecimal): Operation? {
return when (id) {
PLUS -> PlusOperation(baseValue, secondValue)
MINUS -> MinusOperation(baseValue, secondValue)
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt
index c8ffd192..e01089ec 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt
@@ -2,14 +2,15 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
-class PercentOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class PercentOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult(): Double {
- var result = 0.0
- if (secondValue != 0.0) {
- result = baseValue / 100 * secondValue
+ override fun getResult(): BigDecimal {
+ return if (secondValue.compareTo(BigDecimal.ZERO) == 0) {
+ BigDecimal.ZERO
+ } else {
+ baseValue.divide(BigDecimal(100)).multiply(secondValue)
}
- return result
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt
index ff124fed..a8019fb1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt
@@ -2,8 +2,9 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
-class PlusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class PlusOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult() = baseValue + secondValue
+ override fun getResult(): BigDecimal = baseValue.add(secondValue)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt
index 713f0d05..55214212 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt
@@ -2,13 +2,18 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.BinaryOperation
import com.simplemobiletools.calculator.operation.base.Operation
+import java.math.BigDecimal
+import kotlin.math.pow
-class PowerOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation {
+class PowerOperation(baseValue: BigDecimal, secondValue: BigDecimal) : BinaryOperation(baseValue, secondValue), Operation {
- override fun getResult(): Double {
- var result = Math.pow(baseValue, secondValue)
- if (java.lang.Double.isInfinite(result) || java.lang.Double.isNaN(result))
- result = 0.0
- return result
+ override fun getResult(): BigDecimal {
+ val result = baseValue.toDouble().pow(secondValue.toDouble())
+
+ return if (java.lang.Double.isInfinite(result) || java.lang.Double.isNaN(result))
+ BigDecimal.ZERO
+ else {
+ BigDecimal(result)
+ }
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt
index c4a40304..c73db5bd 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt
@@ -2,8 +2,10 @@ package com.simplemobiletools.calculator.operation
import com.simplemobiletools.calculator.operation.base.Operation
import com.simplemobiletools.calculator.operation.base.UnaryOperation
+import java.math.BigDecimal
+import kotlin.math.sqrt
-class RootOperation(value: Double) : UnaryOperation(value), Operation {
+class RootOperation(value: BigDecimal) : UnaryOperation(value), Operation {
- override fun getResult() = Math.sqrt(value)
+ override fun getResult() = BigDecimal(sqrt(value.toDouble()))
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt
index febdff81..4a1ca223 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt
@@ -1,3 +1,5 @@
package com.simplemobiletools.calculator.operation.base
-open class BinaryOperation protected constructor(protected var baseValue: Double, protected var secondValue: Double)
+import java.math.BigDecimal
+
+open class BinaryOperation protected constructor(protected val baseValue: BigDecimal, protected val secondValue: BigDecimal)
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt
index 03560d01..f33161ec 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt
@@ -1,5 +1,7 @@
package com.simplemobiletools.calculator.operation.base
+import java.math.BigDecimal
+
interface Operation {
- fun getResult(): Double
+ fun getResult(): BigDecimal
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt
index 5970a505..ce74108e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt
@@ -1,3 +1,5 @@
package com.simplemobiletools.calculator.operation.base
-open class UnaryOperation protected constructor(protected var value: Double)
+import java.math.BigDecimal
+
+open class UnaryOperation protected constructor(protected var value: BigDecimal)
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 41ffc285..3d41dd1e 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".activities.MainActivity"
+ tools:context="com.simplemobiletools.calculator.activities.MainActivity"
tools:ignore="HardcodedText">