Skip to content

Latest commit

 

History

History
99 lines (72 loc) · 4.77 KB

numbers.md

File metadata and controls

99 lines (72 loc) · 4.77 KB
description
Integers and floats to rule the world!

Numbers

There are two basic kinds of numbers in BoxLang: integers (whole numbers) and floats (have a decimal point). Internally, each BoxLang engine treats them uniquely and backs up each numerical value as a Java class: java.lang.Double or java.lang.Integer.

TypeSize (bits)Min ValueMax Value
Integer32-2,147,483,648 (-231)2,147,483,647 (231 - 1)
TypeSize (bits)Significant BitsExponent BitsDecimal Digits
Double64531115-16

{% hint style="success" %} Tip: If you are dealing with currency or tracking precision, please read about precisionEvaluate() to represent big numbers and precision results: https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/math/precisionevaluate {% endhint %}

a = 1;
b = 50.1;
writeOutput( a * b );

Also, note that BoxLang will do the auto-casting for you when converting between integers and doubles.

Numeric Type

Once we start looking at functions/closures and lambdas, you will see that you can also type the incoming arguments and results of functions. You also won't need to type it with integer or float, just as numeric:

numeric function add( numeric a, numeric b ){
    return a + b;
}

Operators & Functions

BoxLang offers tons of mathematical operators and functions: https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/math

abs aCos arrayAvg
arraySum aSin atn
bitAnd bitMaskClear bitMaskRead
bitMaskSet bitNot bitOr
bitSHLN bitSHRN bitXor
ceiling cos decrementValue
expt fix floor
formatBaseN incrementValue inputBaseN
int log log10
max min pi
precisionEvaluate rand randomize
randRange round sgn
sin sqr tan

Casting/Parsing

BoxLang also has a toNumeric() function that you can use to cast a value to a number using different radixes.

toNumeric( "29.5" )
toNumeric( "FF0011", "hex" )
toNumeric( "1010", "bin" )

The parseNumber() is also used to convert a string number into a numeral system (https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/conversion/parsenumber)

{% hint style="info" %} In a positional numeral system, the radix or base is the number of unique digits, including the digit zero, used to represent numbers. For example, for the decimal system (the most common system in use today) the radix is ten, because it uses the ten digits from 0 through 9. {% endhint %}

Is it a number?

BoxLang provides the isNumeric() function to determine if the passed value can be converted to a numeric value.

isNumeric( 23 ) // yes
isNumeric( "twenty" ) // no
isNumeric( 5e2 ) // yes

Repeating Instructions

Number variables can be used to repeat instructions. Like in many other languages, BoxLang supports the for, while and loop constructs:

for( var i = 0; i <= 10; i++ ){
    writeOutput( "Showing day " & i );
}

i =1;
while( i <= 10 ){
    writeOutput( "Showing day " & i++ );
}

{% hint style="info" %} Please note that the syntax varies from tag to script, so refer to the docs for subtle differences. Please also note that you can iterate over structures, arrays, queries, and objects in BoxLang; we will see this in later sections.

See https://boxlang.ortusbooks.com/boxlang-language/reference/components/system/loop for more information {% endhint %}