NombreLongSyntaxeNombreLong1(NroOrig) Convertit un nombre long en notation exponentielle en chaîne de caractères. Le paramètre est au format nombre, le résultat est au format texte. Traite les nombres longs au délà de + 536870911 ou en déçà de - 536870911 Par Fredo d;o) ExempleNombreLong1(536870911 * (pi ^ pi)) (=1.95754728453491E+10) ---> "19575472845,35" Scripton NombreLong1(NroOrig) set {NroTxt, NroOk, Coma} to ¬ {NroOrig as text, NroOrig as text, item 2 of (0.0 as text)} if "E" is in NroTxt then set {PlcPoint, PlcE} to ¬ {offset of Coma in NroTxt, offset of "E" in NroTxt} set {PlcSgnNeg, PlcSgnPos} to ¬ {offset of "-" in NroTxt, offset of "+" in NroTxt} set PlcSgn to PlcSgnNeg + PlcSgnPos set DecOrig to (text (PlcPoint + 1) thru (PlcE - 1) of NroTxt) set EntOrig to (text 1 thru (PlcPoint - 1) of NroTxt) set NbrDecOrig to length of DecOrig set NbrDecNew to ¬ ((text (PlcE + 1) thru -1 of NroTxt) as text) as number if (NbrDecOrig > NbrDecNew) then set EntNew to (EntOrig & (text (PlcPoint + 1) ¬ thru (PlcPoint + NbrDecNew) of NroTxt)) set DecNew to (Coma & (text (PlcPoint + NbrDecNew + 1) ¬ thru (PlcE - 1) of NroTxt)) else set {Zrs, LstZrs} to {"", "0000000000000000"} set NbrZrs to (NbrDecNew - NbrDecOrig) div 1 if (NbrZrs > 0) then set Zrs to (text 1 thru NbrZrs of LstZrs) set {EntNew, DecNew} to {(EntOrig & DecOrig & Zrs) as text, ""} end if set NroOk to (EntNew & DecNew) as text end if return NroOk end NombreLong1
RemarqueRoutine moins précise que NombreLong2 mais plus "silencieuse" .
|