Die uitdrukking van Excel-formule in Java (desimale tot tyd interpretasie)
Vra
Ek verander 'n Excel-bladformule na java, maar ek kan nie verstaan hoe Excel dit regkry om die volgende te neem nie:0.22 pas 'n formule toe:= Teks (R5/14, "H: MM") en kom op een of ander manier by:0,22
Weereens as ek voorsien:2.8 Dit kom om 4.48 kan iemand my asseblief verduidelik hoe dit dit doen.Ek het 'n bietjie gelees oor desimale en ek verstaan die omskakeling, maar dit het nog nie gehelp om bogenoemde te verduidelik nie.
Oplossing
Excel stoor datumtydwaardes as:
- Die getal links van die desimale verteenwoordig die aantal dae sedert 1 Januarie 1900
- Die getal regs van die desimale verteenwoordig die breukdeel van 'n 24-uur dag
In jou voorbeeld skakel jy 'n desimale om na 'n tekstuele voorstelling van die uur- en minuutgedeeltes van die datum-tydwaarde.
Werk deur jou eerste formule, 0,22 gedeel deur 14 (waarom doen jy dit?) is gelyk aan 0,015714286.As jy dan hierdie breuk teen 'n 24-uur dag toedien (vermenigvuldig met 1440 minute), is dit gelyk aan 22 minute en 'n mate van verandering (d.w.s."0:22").
Werk deur jou tweede formule, 2.8 gedeel deur 14 is gelyk aan 0.2.Vermenigvuldig met 1440, is dit gelyk aan 288 minute, wat 4 uur en 48 minute is (d.w.s."4:48").
Ander wenke
Of die Abacus Formule-samesteller vir Java, wat jou toelaat om die formules in Excel-blaaie saam te stel tot by Java-grepe-kode vir vinnige en maklike oproepe vanaf jou Java-toepassings (kan met looptyd saamstel sonder die JDK).
Ja, dit is 'n bietjie goofy.Haal die /14 uit en dit help.Basies 1=1 dag so R5 word uitgedruk in 14de van 'n dag.Jy kan waarskynlik doen
int msInADay= 86400000;
Time value = new Time(R5/14 * msInADay);
maar dit is ongetoets.
Dankie Creedence.
Dit werk met:dubbel r = 0.22;dubbele rytyd = (r / 14) * 1440;
'n Baie goeie dokumentasie van Spreadsheet-internals kan gevind word in die OpenFormula-spesifikasie (wat OpenOffice-Calc dokumenteer/definieer).
http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula
As jy 'n Java-biblioteek soek om Excel-formules te evalueer, kan óf Apache-POI óf Pentaho se LibFormula nuttig wees:
LibFormule: http://sourceforge.net/project/showfiles.php?group_id=51669&package_id=213669