From 06e46b0e904ca279e6e397c9f9040cf0f059b930 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Fri, 19 Apr 2013 20:08:05 -0600 Subject: Corrected bugs in division scaling and string parsing. --- src/main.cpp | 16 +++++++++++----- src/number.cpp | 4 +++- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index a9b0072..4e51020 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -259,9 +259,9 @@ void ordertest() void radixtest() { - Number a( 0, 16 ), b( 0, 16 ); + Number a( 10, 16 ), b( 10, 16 ); - a = "f8a72bce3"; + a = "1f8a72bbce3"; b = "9ea8cb3"; println("%1 + %2 = %3"). arg( a ). @@ -290,6 +290,12 @@ void fractest() a = "12"; b = "4"; println("%1 / %2 = %3").arg( a ).arg( b ).arg( a / b ); + + a = Number( 100 ); + b = Number( 100 ); + a = "9"; + b = "1.9"; + println("%1 / %2 = %3").arg( a ).arg( b ).arg( a / b ); } int main( int , char *[] ) @@ -297,9 +303,9 @@ int main( int , char *[] ) println("CliC"); // packedtest1(); -// numbertest1(); -// numbertestcomp(); -// radixtest(); + numbertest1(); + numbertestcomp(); + radixtest(); fractest(); // ordertest(); diff --git a/src/number.cpp b/src/number.cpp index 15cad95..f9fab26 100644 --- a/src/number.cpp +++ b/src/number.cpp @@ -248,6 +248,8 @@ void Number::set( const Bu::String &sNum ) aInt.clear(); aFrac.zero(); bPositive = true; + if( sNum.isEmpty() ) + return; int iPt; for( iPt = 0; iPt < sNum.getSize() && sNum[iPt] != '.'; iPt++ ) { } @@ -455,7 +457,7 @@ void Number::divide( const Number &rhs, Number &q, Number &r ) const newrhs.aInt.append( rhs.digit( j ) ); newbase.aInt.append( digit( j ) ); } - for( int j = 0; j < aInt.getSize(); j++ ) + for( int j = rhs.aInt.getSize(); j < aInt.getSize(); j++ ) { newbase.aInt.append( aInt.get( j ) ); } -- cgit v1.2.3