aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2016-10-20 13:46:11 -0400
committerKen Moore <ken@ixsystems.com>2016-10-20 13:46:11 -0400
commita2ff9e5e69c2a4a9dca23961635a2311d424af1a (patch)
tree354c8c0edf2d82383c90d59f28c3f4951882fef1
parentFix up the parsing/usage of scientific notation within the equation (1e1 or 1... (diff)
downloadlumina-a2ff9e5e69c2a4a9dca23961635a2311d424af1a.tar.gz
lumina-a2ff9e5e69c2a4a9dca23961635a2311d424af1a.tar.bz2
lumina-a2ff9e5e69c2a4a9dca23961635a2311d424af1a.zip
Add the ability to acknowledge the "power" symbol (^) within an equation
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
index baaa0a27..78d071a0 100644
--- a/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
@@ -81,11 +81,12 @@ void mainUI::captureButtonMultiply(){ ui->line_eq->setText(ui->line_eq->text() +
void mainUI::captureButtonDecimal(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Decimal->text()); }
double mainUI::performOperation(double LHS, double RHS, QChar symbol){
- qDebug() << "Perform Operation:" << LHS << symbol << RHS;
+ //qDebug() << "Perform Operation:" << LHS << symbol << RHS;
if(symbol== '+'){ return (LHS+RHS); }
else if(symbol== '-'){ return (LHS-RHS); }
else if(symbol== '*' || symbol=='x'){ return (LHS*RHS); }
else if(symbol== '/'){ return (LHS/RHS); }
+ else if(symbol== '^'){ return ::pow(LHS, RHS); }
//else if(symbol== '%'){ return (LHS%RHS); }
qDebug() << "Invalid Symbol:" << symbol;
return BADVALUE;
@@ -93,7 +94,7 @@ double mainUI::performOperation(double LHS, double RHS, QChar symbol){
double mainUI::strToNumber(QString str){
//Look for perentheses first
- qDebug() << "String to Number: " << str;
+ //qDebug() << "String to Number: " << str;
if(str.indexOf("(")>=0){
//qDebug() << "Found Parenthesis";
int start = str.indexOf("(");
@@ -107,7 +108,9 @@ double mainUI::strToNumber(QString str){
}
if(end<start){ return BADVALUE; }
//qDebug() << "Replace value:" << str << start << end << str.mid(start+1,end-start);
- str.replace(start, end-start+1, QString::number( strToNumber( str.mid(start+1, end-start-1)) ) );
+ double tmp = strToNumber( str.mid(start+1, end-start-1));
+ if(tmp!=tmp){ return BADVALUE; } //not a number
+ str.replace(start, end-start+1, QString::number( tmp ) );
//qDebug() << "Replaced:" << str;
}
// -------------------------------------
@@ -117,7 +120,7 @@ double mainUI::strToNumber(QString str){
//Now look for add/subtract
int sym = -1;
QStringList symbols; symbols << "+" << "-";
- qDebug() << "Get operator:" << str;
+ //qDebug() << "Get operator:" << str;
for(int i=0; i<symbols.length(); i++){
int tmp = str.indexOf(symbols[i]);
while(tmp==0 || (tmp>0 && str[tmp-1].toLower()=='e') ){ tmp = str.indexOf(symbols[i], tmp+1); } //catch scientific notation
@@ -129,7 +132,7 @@ double mainUI::strToNumber(QString str){
if(sym>0){ return performOperation( strToNumber(str.left(sym)), strToNumber(str.right(str.length()-sym-1)), str[sym]); }
if(sym==0){ return BADVALUE; }
//Now look for multiply/divide
- symbols.clear(); symbols << "x" << "*" << "/";
+ symbols.clear(); symbols << "x" << "*" << "/" << "^" ;
for(int i=0; i<symbols.length(); i++){
int tmp = str.indexOf(symbols[i]);
if(sym < tmp){ sym = tmp; }
@@ -138,6 +141,6 @@ double mainUI::strToNumber(QString str){
if(sym==0){ return BADVALUE; }
//Could not find any operations - must be a raw number
- qDebug() << " - Found Number:" << str << str.toDouble();
+ //qDebug() << " - Found Number:" << str << str.toDouble();
return str.toDouble();
}
bgstack15