Excel シートの数式を Java に変換していますが、Excel がどのように次の式を取得するのか理解できません: 0.22
繰り返しますが、2.8 を指定すると、4.48 になります。私は小数について少し読んだことがあり、変換を理解していますが、これは上記の説明にはまだ役立っていません。
Excel は日時値を次のように保存します。
あなたの例では、10 進数を datetime 値の時間と分の部分のテキスト表現に変換しています。
最初の式を計算すると、0.22 を 14 で割ると (なぜこれを行うのですか?)、0.015714286 になります。次に、この分数を 1 日 24 時間に対して適用すると (1440 分を掛ける)、22 分といくらかの変化 (つまり、「0:22」) に等しくなります。
2 番目の数式を使用すると、2.8 を 14 で割ると 0.2 になります。1440 を掛けると 288 分、つまり 4 時間 48 分になります (つまり、「4:48」)。
または、Abacus Formula Compiler for Java を使用すると、Excel シートの数式を Java バイト コードにまでコンパイルして、Java アプリからすばやく簡単に呼び出すことができます (JDK なしで実行時にコンパイルできます)。
ええ、それは少し間抜けです。/14 を取り出すと、それが役立ちます。基本的に1=1日なので、R5は14分の1で表されます。あなたはおそらくできる
int msInADay= 86400000;
Time value = new Time(R5/14 * msInADay);
しかし、それはテストされていません。
Spreadsheet-internals の非常に優れた文書は、OpenFormula 仕様 (OpenOffice-Calc を文書化/定義する) にあります。
http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula
Excel-Formulas を評価するために Java-Library を探している場合は、Apache-POI または Pentaho の LibFormula が役立つ場合があります。
LibFormula: http://sourceforge.net/project/showfiles.php?group_id=51669&package_id=213669
ありがとうクリーデンス。
次のように動作します: double r = 0.22; ダブル ドライブ時間 = (r / 14) * 1440;