mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-20 09:04:44 +00:00
64 lines
2.9 KiB
Text
64 lines
2.9 KiB
Text
|
The '''VAL''' Function returns the decimal numerical equivalent value of a [[STRING]] numerical value.
|
||
|
|
||
|
|
||
|
{{PageSyntax}}
|
||
|
:: value = VAL(string_value$)
|
||
|
|
||
|
|
||
|
* VAL converts string numbers to numerical values including decimal point values and prefixed "[[&H]]" hexadecimal, "[[&O]]" octal.
|
||
|
* VAL conversion stops at non-numeric characters except for letter "D" or "E" exponential notation values.
|
||
|
:String values with "D" and "E" letters between numbers may be converted also! EX: '''{{text|VAL("9D4") <nowiki>=</nowiki> 90000|green}}'''
|
||
|
* If the first string character is not a number VAL returns 0. VAL may return erratic values with "%" or "&" starting characters.
|
||
|
* Hexadecimal [[HEX$]] string values with the "[[&H]]" prefix can be converted to a decimal value with digits 0 to 9 and letters A to F.
|
||
|
* Octal [[OCT$]] string values with the "[[&O]]" prefix can be converted to a decimal value with digits from 0 to 7 only.
|
||
|
* Presently VAL '''cannot''' convert QB64 binary [[&B]] prefixed strings from binary to decimal in '''QB64'''.
|
||
|
* For character values of [[ASCII]] data use [[ASC]] to get the value.
|
||
|
|
||
|
|
||
|
''Example 1:'' Converting a string with some number characters
|
||
|
{{CodeStart}} '' ''
|
||
|
text$ = "1.23Hello"
|
||
|
number! = VAL(text$)
|
||
|
PRINT number! '' ''
|
||
|
{{CodeEnd}}
|
||
|
{{OutputStart}}
|
||
|
1.23
|
||
|
{{OutputEnd}}
|
||
|
|
||
|
|
||
|
''Example 2:'' Converting literal and variable [[STRING|string]] values to numerical values.
|
||
|
{{CodeStart}} '' ''
|
||
|
a$ = "33"
|
||
|
PRINT VAL("10") + VAL(a$) + 1 '' ''
|
||
|
{{CodeEnd}}
|
||
|
{{OutputStart}}
|
||
|
44
|
||
|
{{OutputEnd}}
|
||
|
:''Explanation:'' 10 + 33 + 1 = 44, the strings were converted to values.
|
||
|
|
||
|
:You have to convert the string to values in order to use them in a mathematical expression also since mixing strings with numbers isn't allowed. VAL will stop at a text letter so VAL("123G56) would return 123.
|
||
|
|
||
|
:If VAL wasn't used the program would break with an error, as you can't add the value 1 to a string, if the 1 was a string ("1") then the program would return "10331", but now since we used VAL, the numbers were added as they should.
|
||
|
|
||
|
|
||
|
''Example 3:'' Converting a hexadecimal value to decimal value using HEX$ with VAL.
|
||
|
{{CodeStart}}
|
||
|
decnumber% = 96
|
||
|
hexnumber$ = "&H" + {{Cl|HEX$}}(decnumber%) 'convert decimal value to hex and add hex prefix
|
||
|
PRINT hexnumber$
|
||
|
decimal% = {{Cl|VAL}}(hexnumber$)
|
||
|
PRINT decimal% '' ''
|
||
|
{{CodeEnd}}
|
||
|
{{OutputStart}}
|
||
|
&H60
|
||
|
96
|
||
|
{{OutputEnd}}
|
||
|
: ''Explanation:'' [[HEX$]] converts a decimal number to hexadecimal, but [[VAL]] will only recognize it as a valid value with the "&H" prefix. Especially since hexadecimal numbers can use "A" through "F" in them. Create a converter function from this code!
|
||
|
|
||
|
|
||
|
''See also:''
|
||
|
* [[STR$]], [[HEX$]]
|
||
|
* [[OCT$]], [[ASC]]
|
||
|
|
||
|
|
||
|
{{PageNavigation}}
|