Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #27032
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: Bignumb addition function, suggestion improvements. |
| Date | 2015-03-14 13:41 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87fv97u25x.fsf@bsb.me.uk> (permalink) |
| References | <f9fe170d-9fdf-42bf-9fca-23a3bc48f76c@googlegroups.com> |
jonas.thornvall@gmail.com writes:
> I just wrote a big numb addition function this morning, it is a bit
> silly and naive, not pure string not pure integer. I think it is
> correct, but i may have missed leading last digit.
Yes, you do miss the leading digit in some cases. And it's only for
positive numbers.
> Suggestions to write it shorter and more clear, but keeping the naive
> approach appreciated.
>
> <SCRIPT LANGUAGE="Javascript">
>
> function naiveAdd(strOne,strTwo) {
> if (strOne.length>=strTwo.length) {length=strOne.length;} else {length=strTwo.length;}
> oneS = strOne.split("").reverse().join("");
> twoS = strTwo.split("").reverse().join("");
I would avoid this reversing operation. It's not needed since you can
get the charCodeAt any index value you like.
> out="";
> remainder=0;
Use var.
> for (i=0;i<length;i++){
> one=oneS.charAt(i);
> two=twoS.charAt(i);
> one=parseInt(one);
> two=parseInt(two);
> if (isNaN(one)) one = 0;
> if (isNaN(two)) two = 0;
> sum=one+two+remainder;
> if (sum>=10) { sum=sum-10; remainder=1;} else {remainder=0;}
> out=sum+out;
> }
There's a bit of duplication here and a bug: you forget that the carry
(the usual name for your 'remainder') can be set at the end of the loop.
> document.write("Sum = ",out,"<BR>");
> }
>
> strOne="9003";
> strTwo="13039";
> naiveAdd(strOne,strTwo);
>
> </SCRIPT>
String.prototype.digitValueAt = function (pos) {
var d = this.charCodeAt(pos);
return isNaN(d) ? 0 : d - 48;
}
function naiveAddX(strOne, strTwo) {
var i1 = strOne.length, i2 = strTwo.length, result = "", carry = 0;
while (i1 > 0 || i2 > 0 || carry > 0) {
var dsum = strOne.digitValueAt(--i1) + strTwo.digitValueAt(--i2) + carry;
if (dsum >= 10) {
dsum -= 10;
carry = 1;
}
else carry = 0;
result = dsum + result;
}
return result;
}
You could also build a result array and create the string on one go.
That's probably faster.
--
Ben.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 04:15 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 04:40 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 04:56 -0700
Re: Bignumb addition function, suggestion improvements. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-03-14 13:41 +0000
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 10:17 -0700
Re: Bignumb addition function, suggestion improvements. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-03-14 19:39 +0000
Re: Bignumb addition function, suggestion improvements. Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-03-14 20:56 +0100
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 01:52 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 02:57 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 03:07 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 10:57 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 03:40 -0700
Re: Bignumb addition function, suggestion improvements. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-03-15 11:06 +0000
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 04:09 -0700
Re: Bignumb addition function, suggestion improvements. Dr.Kral@nyc.rr.com - 2015-03-14 19:51 -0400
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-14 23:57 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 00:08 -0700
Re: Bignumb addition function, suggestion improvements. John Harris <niam@jghnorth.org.uk.invalid> - 2015-03-15 10:46 +0000
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 04:12 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 06:00 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 04:27 -0700
Re: Bignumb addition function, suggestion improvements. jonas.thornvall@gmail.com - 2015-03-15 05:30 -0700
csiph-web