- +++ Scripting now can do basic calculation using math operators +-*/. Fractions and parentheses are supported.
Examples:
::echo 1 + 1;
::echo 1 - 2 - 3; // -4
::echo 1 - (2 - 3); // 2
::echo 1/3 + 1/3;
::echo 1 + 2 * 3;
::echo (1 + 2) * 3;
::echo 1/0; // error division by zero
::$a=3; $b=2; echo $a / $b; // 1.5
::$fraction = "1.5"; echo $fraction == 3/2; // true
::echo "1.2" + "2.1"; // 3.3
Remarks:
- Strings are converted to numbers as possible (just like in
comparisons).
::$a=""; $b="2"; echo $a + $b; // = 2
::$a="1a"; $b="2b"; echo $a + $b; // = 3
- The decimal separator is NOT locale specific (e.g. dot in US,
comma in Germany) but hard-coded to dot. This way scripts are
interchangeable between regions.
- To define fractional numbers you have to quote them:
::$fraction = "1.5"; echo $fraction / 2; // 0.75 (1.5/2)
::$fraction = 1.5; echo $fraction / 2; // 7.5 (15/2)
- Calculation uses 8-byte floating point numbers with the
following ranges:
negative: -1.79769313486232E308 to -4.94065645841247E-324
positive: 4.94065645841247E-324 to 1.79769313486232E308
Floating point arithmetic has its natural shortcomings so don't
expect too much in terms of precise accuracy down to the 12th
digit. A file manager is not a scientific calculator. - ! Scripting: Comparison did not honour fractions. Fixed. This works now as expected:
::echo "10.3" > "2.2"; //true - + Scripting got a new command.
Name: Echo
Action: Show simple message box.
Syntax: echo text
Examples:
::echo "hi!";
::echo;
Remarks: It's the smaller brother of msg. Added mainly for
copy+paste compatibility with PHP code. - ! Scripting: Nesting ternaries did not work as expected:
::msg (1==1)?((2==2)?"yes":"no"):"error"; //should be "yes"
Fixed. - ! Scripting: Nesting comparisons did not work as expected:
::msg (1==1) == (2==2); //should be 1 (True)
Fixed. - ! Scripting: Numerical comparison was invoked if any of the operands was numerical. Wrong: _both_ operands need to be numerical! Fixed.
::echo ("0" > ""); //true (1)
::echo ("0" > "0"); //false (0) (numeric)
::echo ("0" > "00"); //false (0) (numeric)
::echo ("0" == "00"); //true (1) (numeric)
::echo ("0" == "")"; //false (0)
::echo ("a" == "")"; //false (0)
::echo ("a" == "0")"; //false (0)
::echo (0 == ""); //false (0)
::$foo=0; echo ($foo == ""); //false (0) - ! Scripting: Would ignore functions when one or more blanks were between function name and opening parenthesis. Fixed. Now you can do this:
::msg quote ("pluto"); - ! Scripting: Setting variables using equal-operator would convert the variables to lower case internally. Fixed: Case is preserved now, and this works as expected:
::$myText = "Howdy!"; echo $myText; - ! SC "load": In a passed list of script labels any blanks were not trimmed. Fixed.
Saturday, September 20, 2008
v7.60.0018 - 2008-09-20 13:27
Entry Type: Beta Update Posted by XYplorer user : J_C_Hallgren at 7:24 AM