pirika logo

化学系プログラミング > 比較的新しい化学系プログラミング > HTML5手習 > 数値計算の注意

2013.1.2

JAVAからJAVAScriptへ変更する際に数値計算で注意が必要です。

例えば、Antoineの蒸気圧計算式は次のようになります。

log Pressure = A- B/(T+C)

その際に、log が自然対数のlog,(LNと書かれることもある)、log10(底を10にしたログ)、T(温度)がケルビンか°Cか、圧力がmmHgかBarかでアントワン定数が数種類あります。

Pirikaではlog10, Kelvin, mmHgのAntoineを採用しています。
(通常の化合物で、AntAが7付近、AntBが1200,AntCが200ちょっとなので、気をつけて計算してください。)

JAVAやJavaScriptのMath.log(X)関数は自然対数なので、

function log10(x) { return Math.LOG10E * Math.log(x); }

という関数を用意して、log10を計算できるようにしておきます。

最新のJavaScriptではMath.log10(X)が定義されていますが、電子書籍などでは最新のものがサポートされているか不明のこともありますので、どこでも動くようにしたいなら自分で書いた関数を持たせた方が安全です。

結果を出力するときに、数値演算は、327.93674084848というように小数点以下ずらずら値が入ってくるので、小数点以下を四捨五入する関数、Math.round(X)を使って丸め込みます。

X=327.93674084848*100; //100倍する。  
var Y=Math.round(X); //小数点以下を四捨五入。  
X=Y/100.0; //1/100倍する。  

出力の改行コードは”\n"とします。
\の記号はマックの場合はオプションキーを押しながら¥記号を押します。
プログラムによっては¥記号でも通用しますが、JavaScriptでは¥記号はダメなようです。

後はJAVAの数値計算部分で変数の int や double を var に変えて配列の定義をJavaScriptに変えます。将来他の言語に移植する可能性を考えるなら元の変数のタイプを残しておいた方が良いでしょう。

var a=1; //int

変数の初期値はJAVAは0になっていますが、JavaScriptでは初期化されないのできちんと定義します。
それさえ気をつければ、問題なく移植できるでしょう。


Copyright pirika.com since 1999-
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。