Discussion in 'Javascript' started by Stuart, Nov 5, 2003.

1. ### StuartGuest

I am occasionally having problems with adding numbers together. Sometimes
(not always) 2 + 2 = 22, Obviousy this is a string issue. I am using the
following method to overcome this problem, however I feel it is a bit
contrived, and i am sure there is a proper way of doing it!

var asd = 2
var zxc=2
asd=asd-(-1*zxc)

Stuart, Nov 5, 2003

2. ### Lasse Reichstein NielsenGuest

"Stuart" <> writes:

> I am occasionally having problems with adding numbers together. Sometimes
> (not always) 2 + 2 = 22, Obviousy this is a string issue. I am using the
> following method to overcome this problem, however I feel it is a bit
> contrived, and i am sure there is a proper way of doing it!

<URL:http://jibbering.com/faq/#FAQ4_21>

/L
--
Lasse Reichstein Nielsen -
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Lasse Reichstein Nielsen, Nov 6, 2003

3. ### Svend Ezaki Tofte (DIKU)Guest

On Wed, 5 Nov 2003, Stuart wrote:

> I am occasionally having problems with adding numbers together. Sometimes
> (not always) 2 + 2 = 22, Obviousy this is a string issue. I am using the
> following method to overcome this problem, however I feel it is a bit
> contrived, and i am sure there is a proper way of doing it!

If I want to force conversion, and I'm lazy, I go:

baz = 0 + foo + bar;

It's the same ideas as when you want to turn stuff into a string:

baz = "" + foo + bar;

But in general, 2 + 2 should /never/ give you 22. Unless you're pulling
the numbers from, say a input box (in which case you're pulling text!)

Regards,
Svend

Svend Ezaki Tofte (DIKU), Nov 6, 2003
4. ### Lasse Reichstein NielsenGuest

"Svend Ezaki Tofte (DIKU)" <> writes:

> If I want to force conversion, and I'm lazy, I go:
>
> baz = 0 + foo + bar;

That would be *too* lazy.

var foo="2", bar="2";

This alerts "022". The type concversion favors strings over numbers,
so when you add a string to a number, the number is converted to a
string, not the other way around. The order doesn't matter.

Just do as the FAQ says The fastest method is the unary prefix
plus.
var baz = +foo + +bar;
<URL:http://jibbering.com/faq/#FAQ4_21>

> It's the same ideas as when you want to turn stuff into a string:
>
> baz = "" + foo + bar;

Which works, because the string wins, and evaluation is left to right.

/L
--
Lasse Reichstein Nielsen -
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Lasse Reichstein Nielsen, Nov 6, 2003
5. ### Dr John StocktonGuest

JRS: In article <>, seen
in news:comp.lang.javascript, Svend Ezaki Tofte (DIKU)
<> posted at Thu, 6 Nov 2003 06:29:23 :-
>On Wed, 5 Nov 2003, Stuart wrote:
>
>> I am occasionally having problems with adding numbers together. Sometimes
>> (not always) 2 + 2 = 22, Obviousy this is a string issue. I am using the
>> following method to overcome this problem, however I feel it is a bit
>> contrived, and i am sure there is a proper way of doing it!

>
>If I want to force conversion, and I'm lazy, I go:
>
>baz = 0 + foo + bar;

That's a nice easy method; the only fault, as far as I can see, is that
it does not work.

Tested solutions are safer.

--