2.6.4 Converting Numbers to Strings

The following examples demonstrate conversion of numeric variables to string, including notation to format the number of digits and decimal places.

Converting Numeric to String

Using Substitution Notation

To convert a variable of a numeric type (double, int, or const) to a variable of string type, consider the following simple example:

// myNum contains the integer value 456
int myNum = 456;    
// myNumString now contains the characters 456 as a string
string myNumString$ = $(myNum);

The syntax $(num) is one of type of substitution notation supported in LabTalk. Another, %(string$), is used to convert in the opposite direction, from string to numeric, substituting a string variable with its content.

Formatting can also be specified during the type conversion:

$(number [,format])    // braces indicate that the format is optional

Format follows the C-programming format-specifier conventions, which can be found in any C-language reference, for example:

string myNumString2$ = $("3.14159",%3d);
myNumString2$=                            // "3"

string myNumString2$ = $("3.14159",%3.2f);
myNumString2$=                            // "3.14"

string myNumString2$ = $("3141.59",%6.4e);
myNumString2$=                            // "3.1416e+003"

For further information on this type of formatting, please see $() Substitution.

Using the Format Function

Another way to convert a numeric variable to a string variable uses the format function:

// call format, specifying 3 significant figures
string yy$=Format(2.01232, "*3")$;  
// "2.01"
yy$=;

For full documentation of the format function see Format (Function)

Significant Digits, Decimal Places, and Numeric Format

LabTalk has native format specifiers that, used as part of LabTalk's Substitution Notation provide a simple means to format a number.

Use the * notation to set significant digits

x = 1.23456;
type "x = $(x, *2)";

In this example, x is followed by *2, which sets x to display two significant digits. So the output result is:

x = 1.2

Additionally, putting a * before ")" will cause the zeros just before the power of ten to be truncated. For instance,

y = 1.10001;
type "y = $(y, *4*)";

In this example, the output result is:

y = 1.1

The result has only 2 siginificant digits, because y is followed by *4* instead of *4.

Use the . notation to set decimal places

x = 1.23456;
type "x = $(x, .2)";

In this example, x is followed by .2, which sets x to display two decimal places. So the output result is:

x = 1.23

Use E notation to change the variable to engineering format

The E notation follows the variable it modifies, like the * notation. For example,

x = 1e6;
type "x = $(x, E%4.2f)";

where % indicates the start of the substitution notation, 4 specifies the total number of digits, .2 specifies 2 decimal places, and f is an indicator for floating notation. So the output is:

x = 1.00M

Use the $(x, S*n) notation to convert from engineering to scientific notation

In this syntax, n specifies the total number of digits.

x = 1.23456;
type "x = $(x,S*3)";

And Origin returns:

x = 1.23E0