SymPy è un ottimo strumento per fare conversioni di unità in Python:disponibilità in Python
>>> from sympy.physics import units
>>> 12. * units.inch/units.m
0.304800000000000
Si può facilmente rotolare il proprio:
>>> units.BTU = 1055.05585 * units.J
>>> units.BTU
1055.05585*m**2*kg/s**2
Tuttavia, non posso implementare questa nella mia applicazione, a meno Posso convertire i gradi C (assoluto) in K in gradi F in gradi R o qualsiasi combinazione di essi.
ho pensato che forse qualcosa di simile a questo dovrebbe funzionare:
units.degC = <<somefunc of units.K>>
Ma è chiaro che questa è la strada sbagliata per scendere. Qualche suggerimento per implementare in modo pulito le conversioni delle unità di tipo "offset" in SymPy?
Nota: sono aperto a provare altri moduli di conversione unità, ma non conosco alcun altro oltre a Unum e l'ho trovato ingombrante.
Modifica: OK, ora è chiaro che ciò che voglio fare è determinare innanzitutto se le due grandezze da confrontare si trovano nello stesso sistema di coordinate. (come le unità di tempo che fanno riferimento a epoche o fusi orari diversi o dB a un'ampiezza diretta), effettuare la trasformazione appropriata, quindi effettuare la conversione. Esistono strumenti generali di gestione dei sistemi di coordinate? Sarebbe grandioso.
Vorrei supporre che ° F e ° C si riferiscano sempre ad Δ ° F Δ ° C all'interno di un'espressione ma si riferiscono ad assoluto quando si è soli. Mi stavo chiedendo se ci fosse un modo per rendere una funzione units.degF
e schiaffare un decoratore property()
su di esso per far fronte a queste due condizioni.
Ma per ora, mi misi units.C == units.K
e cercare di mettere bene in chiaro nella documentazione utilizzare le funzioni convertCtoK(...)
e convertFtoR(...)
quando si tratta di unità assolute. (Sto scherzando No non lo farò..)
Peccato che sympy.physics.units non abbia documentazione. –
Le unità GNU le separano in 'degF' e' tempF (x) ': https://www.gnu.org/software/units/manual/units.html#Temperature-Conversions – endolith