mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-16 13:13:55 +00:00
33adc04fc4
Just more initial setting on... nothing much to see here.
75 lines
3.3 KiB
Text
75 lines
3.3 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, like; dec = VAL("&H"+hexvar$).
|
|
* 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.
|
|
* In QB64 use an [[INTEGER]] return variable to hold integer values returned by VAL [[HEX$|Hex]] strings: '''{{text|value% <nowiki>= VAL("&HFFFF") =</nowiki> -1|green}}'''
|
|
|
|
|
|
''Example 1:'' Differences in values returned with Qbasic and QB64:
|
|
{{CodeStart}} '' ''
|
|
{{Cl|PRINT}} {{Cl|VAL}}("{{Cl|&H}}") '203 in QB, 0 in QB64
|
|
{{Cl|PRINT}} {{Cl|VAL}}("{{Cl|&H}}FFFF") ' -1 QB, 65535 in QB64
|
|
{{Cl|PRINT}} {{Cl|VAL}}("{{Cl|&H}}FFFF&") '65535 in both '' ''
|
|
{{CodeEnd}}
|
|
:''Explanation:'' A quirk in Qbasic returned VAL values of 203 for "&" and "&H" that was never fixed until PDS(7.1).
|
|
|
|
|
|
''Example 2:'' Converting a string with some number characters
|
|
{{CodeStart}} '' ''
|
|
text$ = "1.23Hello"
|
|
number! = VAL(text$)
|
|
PRINT number! '' ''
|
|
{{CodeEnd}}
|
|
{{OutputStart}}
|
|
1.23
|
|
{{OutputEnd}}
|
|
|
|
|
|
''Example 3:'' 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 4:'' 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}}
|
|
<
|