XLcalc
XLCalc 1.0.1
Class provides simple mathematical operations with integers of any size.Integers are processed as strings using old-style schoolbook math.
Download class and sample project
http://www.belle-nuit.com/download/xcalc.sit.hqx
http://www.belle-nuit.com/download/xcalculator.sit.hqx
Methods
The class provides the following functions:
Function Plus(a as string, b as string) As string
Function Minus(a as string, b as string) As string
Function Mult(a as string, b as string) As string
Function Div(a as string, b as string) As string
Returns integer division. If the result is negative, the smaller absolute value will be returned.
Function Modus(a as string, b as string) As string
Returns the remainder of integer division. If the result is negative, the remainder to the smaller absolute value will be returned. Is called Modus because Mod is a reserved word in REALbasic.
Function Greater(a as string, b as string) As boolean
Function Lower(a as string, b as string) As boolean
Function Equal(a as string, b as string) As boolean
Comment on the compare-functions. If any of the strings are not valid, false will be returned.
Function Abs(a as string) As string
Function IsValid(a as string) As boolean
If you try to process strings, which contain non-numeric values, an error-string will be returned. You can prevent this by testing your string against the IsValid function before calling any other function.
New 1.0.1: Checks also for leading zeros. A number with leading zeros is not valid. If you are not sure that the number does not have leading zeros, you may use the Strip0 function to clean up your number string.
Function Strip0(a as string) as string New 1.0.1
Cuts leading zeros in a number string.
Function GetValidNumber(a as string) as string New 1.0.1
Parses the string and returns a valid number string, eliminating all offending characters.
Function IsNotNull(a as string) As boolean
If you try to divide by zero (using the Div or the Modus function), an error-string will be returned. You can prevent this by testing your string against the IsNotNull function before calling Div or Modus. IsNotNull also tests for IsValid.
Function About() As string
Returns an about-string of the class
Function Version() As string
Returns the current version of the class
Properties
This class does not have any property. Providing it as a class however frees you of problems of namespace in your application. If you need to access to it from the whole program, make it a property of your app-subclass.
About Speed
This class uses old schoolbook methods, so don't ask for speed. For the moment, I just wanted to make it possible. The sample application shows the ticks used for a calculation in a static texfield.
You may experience the following durations
- Abs: 0.005*lg(a)*c
- Greater, Equal, Lower: 0.01*(lg(a)+lg(b))*c
- Plus, Minus: 0.02*(lg(a)+lg(b))*c
- Mult: 0.01*(lg(a)+lg(b))^2*c
- Div, Modus: (0.02*(lg(a)+lg(b))+0.008*(lg(a)-lg(b)*(lg(b))*c
where c is a constant depending of your processor speed.Divide/Modus are the longest ones and their durations is the less predictable as it depends on the evolution of the reminders.
Terms of use / Disclaimer
© Belle Nuit Montage / Matthias Bürcher November 2000. All rights reserved. Written in Switzerland.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Comments please to matti@belle-nuit.com
The latest version is available at http//www.belle-nuit.com/
History
3.11.00 Released 1.0.1: Stronger checking of number (leading zeros not allowed) both in the XLcalc class as in the Integerfield class. Prevents error when calculating with numbers which have leading zeros.
8.6.00 Released as open source
23.3.00 Release Class XLcalc 1.0.0 and application XLcalculator 1.0.0