Responses to numeric questions are recorded in the long data type for integer numbers and record in the double data type for real numbers (ie 1.5, 2.73, 15.25, 2.0).
The following functions and operators can be used in conditions for
numeric questions:
Comparison to a value
- Relational Operators: less than, greater than, equal to, etc
Comparison to a range or several values
- InRange: Checks if the number falls within a range
- InList: Checks if the number falls within a list of numbers
Math Functions
These are the functions in the C# Math Class that could be useful in your instrument:
- Arithmetic Operators: addition, subtraction, multiplication, division
- ***Abs: ***Returns the absolute value of a number
- ***Ceiling: ***Returns the smallest integer that is greater than or equal to the decimal number
- ***Floor: ***Returns the largest integer that is less than or equal to the decimal number
- ***Max: ***Returns the larger of the two numbers
- ***Min: ***Returns the smaller of the two numbers
- ***Pow: ***Returns a specified number to a specified power
- ***Round: ***Round the decimal number to the closest integer
- ***Sign: ***Returns whether the number is positive or negative
- Sqrt: Returns the square root of the number
- ***Truncate: ***Returns the integer part of a decimal number
- Additional methods in the C# Math Class
InRange
Description
Checks if a value falls within a specified range.
Syntax
var.InRange(a,b)
This function will return ***true ***if a ≤ var ≤ b. Otherwise, it will return false. The values of a and b can either be numbers or variables. This function provides a more simple way to write the condition:
var ≥ a && var ≤ b
Example 1
Assume there is a question (days_worked) that asks the respondent how many days in the last 7 days did they work at their primary job. We want to check that the response is between 0 and 7 days as a validation condition.
For this check, we would write the validation condition for the question like this:
self.InRange(0,7)
It can also be written using the variable name:
days_worked.InRange(0,7)
Example 2
A common check for numeric questions is a range check to verify that the answer to the question is within certain bounds. To verify, for example, that year of birth is within 1900 to 2020 range we write a validation condition for this variable:
self.InRange(1900,2016)
InList
Description
Checks if a value matches any of the values in a specified list.
Syntax
var.InList(a,b,c,d,…)
This function will return true if var matches any of the arguments in the provided list. Otherwise, it will return false. The values in the list can either be numbers or variables. This function provides a more simple way to write the condition:
(var==a || var==b || var==c || var==d || ...)
Example 1
Assume you have a question (satisfied) that asks people to rank how satisfied they are with their life on a scale of 1 to 5 with 1 being very unsatisfied and 5 being very satisfied. For people that answered 1 or 5, you want to ask them additional questions so you will need to have enabling conditions for them. For the follow up questions, you would code the enabling conditions like this:
satisfied.InList(1,5)
Abs
Description
Returns the absolute value of a number. The absolute value of a real
number can be thought of as the distance of the number from zero.
Syntax
Math.Abs(z)
The value for z can be an expression, a variable or a number. If you are
using a variable or an expression with multiple variables, you will have
to add .Value to the end of each variable to avoid a compile
error.
Example:
Math.Abs(-6) // returns 6
Math.Abs(6) // returns 6
Math.Abs(7-3.5) // returns 3.5
Math.Abs(3.5-7) // returns 3.5
Ceiling
Description
Returns the smallest integral value that is greater than or equal to the
value provided.
Syntax
Math.Ceiling(z)
The value for z can be an expression, a variable or a number. If you are
using a variable or an expression with multiple variables, you will have
to add .Value to the end of each variable to avoid a compile
error.
Example
Math.Ceiling(3.21) // returns 4
Math.Ceiling(3.98) // returns 4
Math.Ceiling(6-3.5) // returns 3
Math.Ceiling(4-2) // returns 2
Floor
Description
Returns the largest integral value that is less than or equal to the
value provided
Syntax
Math.Floor(z)
The value for z can be an expression, a variable or a number. If you are using a variable or an expression with multiple variables, you will have to add .Value to the end of each variable to avoid a compile error.
Example
Math.Floor(3.21) // returns 3
Math.Floor(3.98) // returns 3
Math.Floor(6-3.5) // returns 2
Math.Floor(4-2) // returns 2
Max
Description
Returns the larger of two values
Syntax
Math.Max(a,b)
The value for z can be an expression, a variable or a number. If you are using a variable or an expression with multiple variables, you will have to add .Value to the end of each variable to avoid a compile error.
Example
Math.Max(2,4) // returns 4
Math.Max(10,3) // returns 10
Math.Max(-10,0.5) // returns 0
Math.Max(6,1) // returns 6
Min
Description
Returns the smaller of two values
Syntax
Math.Min(a,b)
The value for z can be an expression, a variable or a number. If you are
using a variable or an expression with multiple variables, you will have
to add .Value to the end of each variable to avoid a compile
error.
Example
Math.Min(2,4) // returns 2
Math.Min(10,3) // returns 3
Math.Min(-10,0.5) // returns -10
Math.Min(6,1) // returns 1
Pow
Description
Returns a specified number raised to the power of another specified
number
Syntax
Math.Pow(a,b)
The number a is raised to the power of b. The value for a and b can be an expression, a variable or a number. If you are using a variable or an expression with multiple variables, you will have to add .Value to the end of each variable to avoid a compile error.
Example 1
Math.Pow(2,3) // returns 8
Math.Pow(4,4) // returns 256
Example 2
You have two questions in your survey that ask for: 1) weight of a person in kilogram (weight) and 2) height of a person in centimeters (height). Both variables height and weight are real numbers (allows for decimal values) and not integers. You want to calculate the Body Mass Index (BMI) of the person and make sure it is in a certain range to validate that the weight and height were entered correctly.
For this check, the code for the validation condition would look like this:
(weight/Math.Pow((height.Value,2)).InRange(10,40)
Round
Description
Rounds a specified value to the nearest integer value
Syntax
Math.Round(z)
The value for z can be an expression, a variable or a number. If you are using a variable or an expression with multiple variables, you will have to add .Value to the end of each variable to avoid a compile error.
Example
Math.Round(20.1) // returns 20
Math.Round(20.6) // returns 21
Math.Round(10-1.5) // returns 9
Sign
Description
Returns whether the value is negative, positive, or zero. If the value
if negative, then it will return the value -1. If the number is
positive, then it will return the value 1. If the number is zero, then
it will return the value 0.
Syntax
Math.Sign(z)
The value for z can be an expression, a variable or a number. If you are
using a variable or an expression with multiple variables, you will have
to add .Value to the end of each variable to avoid a compile
error.
Example
Math.Sign(5) // returns 1
Math.Sign(0) // returns 0
Math.Sign(-2) // returns -1
Math.Sign(-5 + 2) // returns -1
Sqrt
Description
Returns the square root of a specified number. This will return an error
if the specified number is negative.
Syntax
Math.Sqrt(z)
The value for z can be an expression, a variable or a number. If you are
using a variable or an expression with multiple variables, you will have
to add .Value to the end of each variable to avoid a compile
error.
Example
Math.Sqrt(16) // returns 4
Math.Sqrt(144) // returns 12
Math.Sqrt(12 + 13) // returns 5
Truncate
Description
Returns the integer part of a specified number. In other words, this
returns the value of the number before the decimal point.
Syntax
Math.Truncate(z)
The value for z can be an expression, a variable or a number. If you are using a variable or an expression with multiple variables, you will have to add .Value to the end of each variable to avoid a compile error.
Example
Math.Truncate(53.72) // returns 53
Math.Truncate(12.11) // returns 12
Math.Truncate(-2.62) // returns -2