Hi everyone,
I want to check if a number is negative or positive.
But untill now, global.set(port + ".NMEA.nav.position.alt.altitude_relative"
is not written
if (string[0] == "GGA")
{
global.set(port + ".NMEA.UTC.time", string[1]);
global.set(port + ".NMEA.nav.position.dms.lat", string[2]);
global.set(port + ".NMEA.nav.position.dms.NS", string[3]);
global.set(port + ".NMEA.nav.position.dms.lon", string[4]);
global.set(port + ".NMEA.nav.position.dms.EW", string[5]);
global.set(port + ".NMEA.nav.fix.fix", string[6]);
global.set(port + ".NMEA.sat.sat_used", (string[7]*1));
global.set(port + ".NMEA.nav.position.accuracy.HDOP", string[8] * 1);
global.set(port + ".NMEA.nav.position.alt.altitude", (string[9]*1));
global.set(port + ".NMEA.nav.position.alt.altitude_unit", string[10]);
global.set(port + ".NMEA.nav.position.alt.altitude_ellipsoid", (string[11]*1));
if (Math.sign(string[11] === -1))
{
global.set(port + ".NMEA.nav.position.alt.altitude_relative", ((string[11] - string[9])*-1));
}
else if (Math.sign(string[11] === 1))
{
global.set(port + ".NMEA.nav.position.alt.altitude_relative", ((string[11] - string[9]) * 1));
}
global.set(port + ".NMEA.nav.DGPS.update", string[12]);
global.set(port + ".NMEA.nav.DGPS.age", (string[13]*1));
global.set(port + ".NMEA.nav.DGPS.id", string[14]);
}
What am I doing wrong?
I'm not sure but....
if (Math.sign(string[11] === -1))
{
global.set(port + ".NMEA.nav.position.alt.altitude_relative", ((string[11] - string[9])*-1));
I'm not sure what altitude_ellipsoid
mean as you have an altitude
already.
So reading it how I see it:
if
look at the Math.sign
of string[11]
and see if it is -1
(IF TRUE)
((string[11] - string[9])*-1))
So let's look at this:
[11]
is say..... -5
[9]
is 20
-5 - 20 * -1
= -25 * -1
= 25
Isn't the extra * -1
at the end negating things?
-
* -
= +
Why are you having the last bit (on two lines - though different) of *-1
and * 1
?
To me they aren't needed.
But I have been wrong before and will be again.
But to me that is wrong . Somehow.
Hi Trying_to_learn,
the difference between the *-1
and * 1
is that it removes the negative.
If string[11]
is negative, do calc and make it positve.
if string[11]
is positive, do calc and let it positive.
But I am not sure why this calculation doesn't work at all.
The result is that global.set(port + ".NMEA.nav.position.alt.altitude_relative"
is not written to global.
In case of string[11]
is 0, there will be no action.
Try to trace down actual values.
1 Like
That's a good catch @hotNipi
I didn't even think of that one.
My bad, I misunderstood what Math.sign did.
Blockquote
The Math.sign()
static method returns 1 or -1, indicating the sign of the number passed as argument. If the input is 0 or -0, it will be returned as-is.
That syntax is also wrong I think. It should be:
if (Math.sign(string[11]) === -1)
system
Closed
22 September 2023 14:02
8
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.