FORMULA LANGUAGE
Examples: Performing arithmetic operations
1. (*, precedence) This example prints 15 for the first @Prompt because the multiplication 4 * 3 is evaluated first. It prints 21 for the second @Prompt because the parentheses force the evaluation of 3 + 4 first.
@Prompt([Ok]; "3 + 4 * 3"; @Text(3 + 4 * 3)); @Prompt([Ok]; "(3 + 4) * 3"; @Text((3 + 4) * 3))
2. (/ *) This example prints 0.333333333333333 for the first @Prompt, performing the division and rounding the result to 15 decimal places. It prints 1.2635268885E+17 for the second @Prompt, presenting the 11 most significant digits of the result as a fraction multiplied by 1017.
@Prompt([Ok]; "1 / 3"; @Text(1 / 3)); @Prompt([Ok]; "123456789 * 1023456789"; @Text(123456789 * 1023456789))
3. (@Abs) This example calculates the difference between Score1 and Score2 as an unsigned number, no matter which is larger.
@Abs(Score1 - Score2)
4. (@Abs) This example calculates the absolute difference between Sales and CostOfSales, and formats it in a text field placing parentheses around a negative result.
GP := @Abs(Sales - CostOfSales); @If(Sales >= CostOfSales; @Text(GP); "(" + @Text(GP) + ")")
5. (@Sign) This agent example displays the Total field. If the field value is negative, its absolute value is placed in parentheses; if the field value is zero, the word "Zero" is displayed.
sign := @Sign(Total);
display := @If(sign = 1; @Text(Total); sign = -1; "(" + @Text(@Abs(Total)) + ")"; "Zero");
@Prompt([Ok]; "Total"; display);
SELECT @All
6. (@Sum) This example prints 15, the sum of the list One23, the variable Four, and the constant 5.
One23 := 1 : 2 : 3; Four := 4;
S := @Sum(One23; Four; 5); @Prompt([Ok]; "Sum of 1-5"; @Text(S))
7. (@Integer) This example truncates 3.12 to 3 and 6.735 to 6.
@Prompt([Ok]; "@Integer(3.12)"; @Text(@Integer(3.12))); @Prompt([Ok]; "@Integer(6.735)"; @Text(@Integer(6.735)))
8. (@Integer) This example truncates Sales and Commission to integers in a list.
@Integer(Sales : Commission)
9. (@Round) This example rounds 3.12 to 3, 6.735 to 7, and 7.5 to 8; 753 by tens to 750; and the list elements 3.12, 6.735, and 7.5 to 3, 6, and 7 respectively (converting them to a text string for display).
@Prompt([Ok]; "@Round(3.12)"; @Text(@Round(3.12))); @Prompt([Ok]; "@Round(6.735)"; @Text(@Round(6.735))); @Prompt([Ok]; "@Round(7.5)"; @Text(@Round(7.5))); @Prompt([Ok]; "@Round(753; 10)"; @Text(@Round(753; 10))); @Prompt([Ok]; "@Round(3.12 : 6.735 : 7.5)"; @Implode(@Text(@Round(3.12 : 6.735 : 7.5))))
10. (@Max) This example prints 99, the maximum of 99, 2, and 3; 3, the maximum of 1 and 3; and 99 6 7 8, the maximum of the pair-wise elements in the two lists.
@Prompt([Ok]; "@Max(99 : 2 : 3)"; @Text(@Max(99 : 2 : 3))); @Prompt([Ok]; "@Max(1; 3)"; @Text(@Max(1; 3))); @Prompt([Ok]; "@Max(99 : 2 : 3; 5 : 6 : 7 : 8)"; @Implode(@Text(@Max(99 : 2 : 3; 5 : 6 : 7 : 8))))
11. (@Min) This example prints 2, the minimum of 99, 2, and 3; 1, the minimum of 1 and 3; and 5 2 3 3, the minimum of the pairwise elements in the two lists.
@Prompt([Ok]; "@Min(99 : 2 : 3)"; @Text(@Min(99 : 2 : 3))); @Prompt([Ok]; "@Min(1; 3)"; @Text(@Min(1; 3))); @Prompt([Ok]; "@Min(99 : 2 : 3; 5 : 6 : 7 : 8)"; @Implode(@Text(@Min(99 : 2 : 3; 5 : 6 : 7 : 8))))
12. (@Modulo) This example prints 1, the remainder of 4/3; -2, the remainder of -14/3 (the remainder is negative when the dividend is negative); and 1 2 3 3, the remainders of the pairwise division of the first list by the second in the third line.
@Prompt([Ok]; "@Modulo(4; 3)"; @Text(@Modulo(4; 3))); @Prompt([Ok]; "@Modulo(-14; 3)"; @Text(@Modulo(-14; 3))); @Prompt([Ok]; "@Modulo(4 : 6 : 8 : 9; 3 : 4 : 5 : 6)"; @Implode(@Text(@Modulo(4 : 6 : 8 : 9; 3 : 4 : 5 : 6))))
13. (@Modulo) This example determines if the input number is even (division by 2 leaves a remainder of 0) or odd.
n := @TextToNumber(@Prompt([OkCancelEdit]; "Input Number"; "Type a number"; "")); @Prompt([Ok]; "The number is ..."; @If(@Modulo(n; 2) = 0; "Even"; "Odd"))
14. This example compares the fields SpecifiedLength and MeasuredLength, and displays a message if the fields are not within 0.01.
@If(@FloatEq(SpecifiedLength; MeasuredLength; 0.01); "";
@Prompt([Ok]; "Length is out of spec";
@Text(MeasuredLength)))
15. (@Power) This example prints 8, 2 raised to the power of 3; -8, -2 raised to the power of 3; and 0.125, 2 raised to the power of -3.
@Prompt([Ok]; "@Power(2; 3)"; @Text(@Power(2; 3))); @Prompt([Ok]; "@Power(-2; 3)"; @Text(@Power(-2; 3))); @Prompt([Ok]; "@Power(2; -3)"; @Text(@Power(2; -3)))
16. (@Sqrt, @Power) This example, which is the value formula for a computed field, calculates the diagonal of a rectangle using the values specified in the Length and Width fields.
@If(Length = "" | Width = ""; ""; @Sqrt(@Power(Length; 2) + @Power(Width; 2)))
17. (@Pi, @Power) This example, which is the value formula for a computed field, calculates the area of a circle using the values specified in the Radius field.
@If(Radius = ""; ""; @Pi * @Power(Radius; 2))
18. (@Log) This example prints 0.602059991327962, the common logarithm of 4; and 14, the common logarithm of 1014.
@Prompt([Ok]; "Common log of 4"; @Text(@Log(4))); @Prompt([Ok]; "Common log of 1.0E+14"; @Text(@Log(1.0E+14)))
19. (@Ln) This example prints 0.693147180559945, the natural logarithm of 2.
@Prompt([Ok]; "Natural log of 2"; @Text(@Ln(2)))
20. (@Exp) This example calculates 2.71828182845904 (the value of e) for the first @Exp function, 3.49034295746184 (the value of e to the 1.25) for the second @Exp function, and 0.28650479686019 (the value of e to the -1.25) for the third @Exp function.
@Prompt([Ok]; "e to 1"; @Text(@Exp(1))); @Prompt([Ok]; "e to 1.25"; @Text(@Exp(1.25))); @Prompt([Ok]; "e to -1.25"; @Text(@Exp(-1.25)))
21. (@Random) This view action example gets a number from a user and compares it to a random number in the range 1 through 99, inclusive.
userNumber := @Prompt([OkCancelEdit]; "Number"; "Must be 1-99"; "");
winningNumber := @Text(@Integer(98 * @Random + 1));
@Prompt([Ok]; "Result"; @If(userNumber = winningNumber; "YOU WIN"; "Sorry - winning number is " + winningNumber))
22. (@Sin, @Cos) This example shows the formulas for two computed fields. The first formula calculates the length of a rectangle and the second formula calculates its width.
Diagonal * @Sin(Angle * @Pi / 180)
Diagonal * @Cos(Angle * @Pi / 180)
Véase también
Performing arithmetic operations
Glosario
¿Desea opinar sobre la Ayuda?
Ayuda sobre la Ayuda
Abrir la Ayuda en pantalla completa
Glosario
¿Desea opinar sobre la Ayuda?
Ayuda sobre la Ayuda
Abrir la Ayuda en pantalla completa