parseNumber: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<dd class="note">([^}]*)<code>([^<]*)<\/code>" to "<dd class="note">$1<sqf>$2</sqf>")
(Fix description, remove C++ explanation)
Line 18: Line 18:
|gr1= Strings
|gr1= Strings


|descr= An SQF equivalent of C++ [http://www.cplusplus.com/reference/cstdlib/atof/ atof] function. Parses the string, interpreting its content as a floating point number.<br><br>
|descr= Parses the string, interpreting its content as a floating point number.
The command first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes as many characters as possible that are valid following a syntax resembling that of [[Floating_Point_Number#Floating_Point_Literals|floating point literals]], and interprets them as a numerical value. The rest of the string after the last valid character is ignored and has no effect on the behavior of this command.<br><br>
{{Feature|important|This command does '''not''' work with strings representing hexadecimal numbers (e.g {{hl|"0xCF"}}).}}
If the first sequence of non-whitespace characters in string does not form a valid floating-point number, or if no such sequence exists because either string is empty or contains only whitespace characters, no conversion is performed and the command returns 0.
{{Feature|informative|Starting whitespaces are discarded, then as many valid characters are used to be interpreted as a number until an invalid character is found then the rest of the string is ignored.}}


|s1= [[parseNumber]] string
|s1= [[parseNumber]] value


|p1= string: [[String]]
|p1= value: [[String]] or {{GVI|arma3|1.50|size=0.75}} [[Boolean]]


|r1= [[Number]]
|r1= [[Number]] - the parsed number, {{hl|0}} if no valid number was found; in the case of a passed [[Boolean]], 0 if [[false]], 1 if [[true]]


|s2= [[parseNumber]] boolean
|x1= <sqf>
_number = parseNumber "0.125"; // 0.125
_number = parseNumber "0050"; // 50
_number = parseNumber "  42 yes"; // 42
_number = parseNumber "3 or 4"; // 3
_number = parseNumber "either 3 or 4"; // 0
_number = parseNumber "0xCF"; // 0
</sqf>


|s2since= arma3 1.50
|x2= since {{arma3}} v1.50:
<sqf>
private _result = parseNumber false; // 0
private _result = parseNumber true; // 1
private _zeroOneStatus = parseNumber alive player; // 0 if the player is dead, 1 if alive
</sqf>


|p21= boolean: [[Boolean]]
|seealso= [[BIS_fnc_parseNumber]] [http://www.cplusplus.com/reference/cstdlib/atof/ atof] [[Floating Point Number#Floating Point Literals|Floating point literals]]
 
|r2= [[Number]] - 0 if [[false]], 1 if [[true]]
 
|x1= <sqf>_number = parseNumber "0.125"; // 0.125</sqf>
 
|x2= <sqf>_number = parseNumber "0050"; // 50</sqf>
 
|x3= <sqf>_number = parseNumber "2 abc"; // 2</sqf>
 
|x4= <sqf>_number = parseNumber true; // 1</sqf>
 
|seealso= [[BIS_fnc_parseNumber]]
}}
}}
<dl class="command_description">
<dt><dt>
<dd class="notedate">Posted on Aug 28, 2014</dd>
<dt class="note">[[User:ffur2007slx2_5|ffur2007slx2_5]]</dt>
<dd class="note"> (A3 1.26)It only detects the first occurrence of a number in the string, return 0 by default.
<sqf>parseNumber "2s4f"; // 2
parseNumber "s2f4"; // 0</sqf>
parse config or code, currently [[BIS_fnc_parseNumber]], occurrence is only limited with number, return -1 by default.
<sqf>{s3s4f} call BIS_fnc_parseNumber; // -1</sqf>
</dd>
<dt></dt>
<dd class="notedate">Posted on April 5, 2021 - 14:56 (UTC)</dd>
<dt class="note">[[User:R3vo|R3vo]]</dt>
<dd class="note">
This command '''does not''' work with strings representing hexadecimal numbers:
<sqf>parseNumber "0xCF"; //Returns 0</sqf>
</dd>
</dl>

Revision as of 15:34, 2 September 2022

Hover & click on the images for description

Description

Description:
Parses the string, interpreting its content as a floating point number.
This command does not work with strings representing hexadecimal numbers (e.g "0xCF").
Starting whitespaces are discarded, then as many valid characters are used to be interpreted as a number until an invalid character is found then the rest of the string is ignored.
Groups:
Strings

Syntax

Syntax:
parseNumber value
Parameters:
value: String or Arma 3 logo black.png1.50 Boolean
Return Value:
Number - the parsed number, 0 if no valid number was found; in the case of a passed Boolean, 0 if false, 1 if true

Examples

Example 1:
_number = parseNumber "0.125"; // 0.125 _number = parseNumber "0050"; // 50 _number = parseNumber " 42 yes"; // 42 _number = parseNumber "3 or 4"; // 3 _number = parseNumber "either 3 or 4"; // 0 _number = parseNumber "0xCF"; // 0
Example 2:
since Arma 3 v1.50:
private _result = parseNumber false; // 0 private _result = parseNumber true; // 1 private _zeroOneStatus = parseNumber alive player; // 0 if the player is dead, 1 if alive

Additional Information

See also:
BIS_fnc_parseNumber atof Floating point literals

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note