Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 27. 11. 2014 12:25:52

PetrValach
Člen
Registrace: 24. 5. 2007
Příspěvků: 561

Převod čísla na stupně

Kolega z redakce Exospace potřebuje převést desetiné číslo na stupně, minuty a vteřiny. Existuje na to nějaká funkce?


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#2 27. 11. 2014 12:53:35

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Převod čísla na stupně

Je to docela jednoduché. Jde jenom o to uvědomit si, že je to podobné převodu času (funkce NOW) - je to tentýž postup jako pro čas i když jde o úhly. Jen se to odlišuje jako celek "1" celá = 360°
     Pak jde jen o to, co to desetinné číslo reprezentuje. Například 1,25°= 1° + 1/25 *60 = 15 minut. Jde - li tedy o desetinnou část čísla, minuty jsou v rozsahu 60/100 = 0,06
Minuty 0,9999 až 0,06 z jednoho stupně
Vteřiny 0,05999 - 0,00000002777 (1/3600) z jednoho stupně
     Samozřejmě když bude údaj v minutách - např 21,25 je to podobné 21 minut + 1/25 = 15 vteřin.
Běžně lze použít přímo převod na vteřiny a udaj zaokrouhlit. Tedy u desetinné části čísla za čárkou - například) 0,6852 a to vydělíme podílem na 1 vteřinu potom počet vteřin "x" = [0,6852]/[1/1296000] => 0,6852 x 360 = stupně (jako 6 hodin). Výsledek je ve vtřinách takže můžeme zpětně vydělit. Také samozřejmě můžeme zbytek odečíst. Postupů je více. Když by šlo o pravidelnou čínnost, tak makrem.
     Když jde o celé stupně - tak je číslo "x" menší nežli 1 (samozřejmě existují úhly přes 360° - a tak bychom celé násobky čísla 360 odečetli).
     Pak stupně = "x" * 360. Vše za desetinnou čárkou jsou minuty a vteřiny, ale nejlepší je postupovat zpětně. Zbytek /360 a to celé krát 360*60 = 21600. Zase zbytek jsou vteřiny ale po zpětném převodu 21600*60 = 1296000.
     Možná by to chtělo začínat opravdu vteřinami - to je zřejmě velké číslo a to zjišťovat pomocí INTEGER (INT) a MODULO (MOD). Stupňů (s) je INT("x"/360*60*60) zbytek je MOD("x";360*60). Následně zase z modula uděláme INT. Minut (m) = INT(Výsledek Mod/60) a tak dál.




PS to je možná na první pohled složité takže ještě jinak například 2,7851:
1. 2,7851 * 360 = 1002,636 (více jak 2 celé otáčky)
2. dostaneme ze zbytku 0,636
3. 1002 je už ve stupních (1002°) potom 0,636 jsou minuty a vteřiny. Musíme zpětně přepočítat
4. 0,636 / 360 = 0,00176
5. 0,00176 * 60 = 0,106 => žádná minuta (0')
6. 0,00176 * 3600 = 6,36"

Editoval neutr (27. 11. 2014 13:52:18)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 27. 11. 2014 15:06:09

PetrValach
Člen
Registrace: 24. 5. 2007
Příspěvků: 561

Re: Převod čísla na stupně

Děkuju vám, Petře :-)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 27. 11. 2014 17:20:01

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 144

Re: Převod čísla na stupně

Zdravím,
Takto by mohla vypadat ta funkce:

Function SMV(N As Double) As Variant
	Dim P(0,2) As Double, S As Double
	S = Sgn(N)
	N = Abs(N)
	P(0,0) = Int(N)
	N = 60*(N-P(0,0))
	P(0,1) = Int(N)
	P(0,2) = 60*(N-P(0,1)) * S	
	P(0,1) = P(0,1) * S
	P(0,0) = P(0,0) * S
	SMV = P
End Function

Zapíše se jako maticový vzorec (Control+Shift+Enter) - vrací pole o třech údajích. V první buňce jsou stupně, v druhém minuty a ve třetím vteřiny.


Ubuntu 22.04.4 LTS, LibreOffice Verze: 7.6.6.3, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)

Offline

#5 27. 11. 2014 20:47:05

PetrValach
Člen
Registrace: 24. 5. 2007
Příspěvků: 561

Re: Převod čísla na stupně

Díky, kolega (teprve 17tiletý student smile ) to použil ve své tabulce. Uvidíte za pár dní na spřáteleném webu Exospace.cz a samozřejmě uvedeme odkaz na tuto stránku fóra s poděkováním :-)

A samozřejmě vaše rady použiju v jednom z dalších dílů tipů a triků pro openoffice/libreoffice.

Petr Valach, redaktor openoffice.cz a šéfredaktor exospace.cz


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 27. 11. 2014 23:39:03

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Převod čísla na stupně

Nezadal jste, jak to desetinné číslo vypadá, ani jak má vypadat výsledek. Fakticky je to velice jednoduché.

Předpokládám, že celá část vyjadřuje stupně, zlomek díl stupně. (Pokud ne, je snadné postup modifikovat na jiný formát.)

V A1 je takové číslo,

a) Vzorec: =A1/24 , uživatelský formát: "[hh]º\ m'\ s,00''"
b) Vzorec: =TEXT(A1/24;"[hh]º\ m'\ s,00''")
c) stupně: =INT(A1), minuty: =MINUTE(A1/24), sekundy: =SECOND(A1/24)


Pro číslo 182,297979 zobrazí varianta a) i b) výsledek: 182º 17' 52,72''

To "h" v uživatelském formátu stačí jedno, to jen redakční systém si myslí, že jde o nadpis a při jednom "h" protestuje.

Offline

Zápatí