SymPyは、Pythonで単位変換を行うための優れたツールです。
>>> from sympy.physics import units
>>> 12. * units.inch / units.m
0.304800000000000
あなたは簡単にあなた自身を転がすことができます:
>>> units.BTU = 1055.05585 * units.J
>>> units.BTU
1055.05585*m**2*kg/s**2
ただし、摂氏C(絶対)から摂氏K、華氏からR、またはそれらの組み合わせを変換できない限り、これをアプリケーションに実装することはできません。
私は多分このようなものがうまくいくと思いました:
units.degC = <<somefunc of units.K>>
しかし、明らかにそれは間違った道です。SymPyで「オフセット」タイプの単位変換をきれいに実装するための提案はありますか?
注:私は他の単位変換モジュールを試してみることにオープンですが、Unum以外は何も知らず、面倒であることがわかりました。
編集:わかりました。最初に、比較する2つの量が同じ座標系にあるかどうかを判断する必要があることは明らかです。(異なるエポックまたはタイムゾーンを参照する時間単位、または直線振幅へのdBのように)、適切な変換を行ってから、変換を行います。一般的な座標系管理ツールはありますか?それは素晴らしいことです。
私は、°Fと°Cは常に式内のΔ°FΔ°Cを参照していると仮定しますが、スタンドアロンの場合は絶対値を参照します。これらの2つの条件に対処するためunits.degF
に、関数を作成し、それにデコレータを叩く方法があるかどうか疑問に思っていました。property()
しかし、今のところ、関数を使用する場合と絶対単位を扱う場合は、ドキュメントで非常に明確にするように設定してunits.C == units.K
みます。(冗談です。いいえ、しません。)convertCtoK(...)
convertFtoR(...)