HP Forums

Full Version: Back with my DEG<->DMS formulas !
You're currently viewing a stripped down version of our content. View the full version with proper formatting.


I thought it could interest you to know how I got these formulas (with x>0):



To compute DEG->DMS(x):

D = unknown degrees as integer

M = unknown minutes as integer

s = unknown seconds as decimal

Known x=D+M/60+s/3600

D = INT(x)

M = INT(60*x-60*D)

M = INT(60*x-60*INT(x))

M = INT(60*x)-60*INT(x)

s = 3600*x-3600*D-60*M

s = 3600*x-3600*INT(x)-60*(INT(60*x)-60*INT(x))

s = 3600*x-3600*INT(x)-60*INT(60*x)+3600*INT(x)

s = 3600*x-60*INT(60*x)

DMS(x) = D+M/100+s/10000

DMS(x) = INT(x)+(INT(60*x)-60*INT(x))/100+(3600*x-60*INT(60*x))/10000

DMS(x) = (10000*INT(x)+100*INT(60*x)-6000*INT(x)+3600*x-60*INT(60*x))/10000

DMS(x) = (3600*x+40*INT(60*x)+4000*INT(x))/10000

DMS(x) = (90*x+INT(60*x)+100*INT(x))/250

It's mathematically exact, but special care is needed in evaluating INT(60*x) on a calculator.

=> It seems better to round 60*x to last internal digit before applying INT.

To compute DMS->DEG(x):

D = unknown degrees as integer

M = unknown minutes as integer

s = unknown seconds as decimal

Known x=D+M/100+s/10000

D = INT(x)

M = INT(100*x-100*D)

M = INT(100*x-100*INT(x))

M = INT(100*x)-100*INT(x)

s = 10000*x-10000*D-100*M

s = 10000*x-10000*INT(x)-100*(INT(100*x)-100*INT(x))

s = 10000*x-10000*INT(x)-100*INT(100*x)+10000*INT(x)

s = 10000*x-100*INT(100*x)

DEG(x) = D+M/60+s/3600

DEG(x) = INT(x)+(INT(100*x)-100*INT(x))/60+(10000*x-100*INT(100*x))/3600

DEG(x) = (3600*INT(x)+60*INT(100*x)-6000*INT(x)+10000*x-100*INT(100*x))/3600

DEG(x) = (10000*x-40*INT(100*x)-2400*INT(x))/3600

DEG(x) = (250*x-INT(100*x)-60*INT(x))/90

Thanks for reading !

Edited: 2 May 2012, 3:08 a.m.


Wow! Great work!

I have written some programs just to take a DMS number and show it in DMS format, I mean, take something like 123.455959 and return the string "123º45'59"59" so it would be easier to read the DMS itself.

My first two versions worked pretty well until I tried them with negative numbers.

Your formulas are way more sophisticated, they are used to compute the DMS and the DEG versions of each other, I see that. But I also noticed that they seem to have no provision for negative input data; do they work accordingly in this case? I did not try any, could not tell, but since they mostly add factors, I felt as if they may deal only with positive numbers.

Best regards.

Luiz (Brazil)


Thanks for your answer.

Their sophistication is in their simplicity (one line formulas).

As I've already specified it ("x>0"), they work only for positive numbers (therefore you need to work with abs value and restore sign at the end)

All those lines in my post were just their mathematical proof (I hope I didn't make any error ...)


My bad, sorry. I read the (x>0) but my brain did not convert it into information, just the words 'x is greater than zero' echoing in the void... Gee, must give it a break.

Their sophistication is in their simplicity (one line formulas).
I could not say it differently. It is also the beauty of the complex solutions expressed as simple terms and expressions. Touchè!


Luiz (Brazil)

Edited: 2 May 2012, 10:31 a.m.

Hello there. PGILLET and the rest of the crew, I'm glad my original inquiry has sparked some inspiration. My pleasure.

Thank you, now my 18C can do it too :-)