VAL: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 35: | Line 35: | ||
''Example 1:'' Differences in values returned with QBasic and QB64: | ''Example 1:'' Differences in values returned with QBasic and QB64: | ||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl|PRINT}} {{Cl|VAL}}( | {{Cl|PRINT}} {{Cl|VAL}}({{Text|<nowiki>"&H"</nowiki>|#FFB100}}) {{Text|<nowiki>'203 in QB, 0 in QB64</nowiki>|#919191}} | ||
{{Cl|PRINT}} {{Cl|VAL}}( | {{Cl|PRINT}} {{Cl|VAL}}({{Text|<nowiki>"&HFFFF"</nowiki>|#FFB100}}) {{Text|<nowiki>' -1 QB, 65535 in QB64</nowiki>|#919191}} | ||
{{Cl|PRINT}} {{Cl|VAL}}( | {{Cl|PRINT}} {{Cl|VAL}}({{Text|<nowiki>"&HFFFF&"</nowiki>|#FFB100}}) {{Text|<nowiki>'65535 in both</nowiki>|#919191}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
:''Explanation:'' A quirk in QBasic returned VAL values of 203 for "&" and "&H" that was never fixed until PDS(7.1). | :''Explanation:'' A quirk in QBasic returned VAL values of 203 for "&" and "&H" that was never fixed until PDS(7.1). | ||
Line 44: | Line 44: | ||
''Example 2:'' Converting a string with some number characters | ''Example 2:'' Converting a string with some number characters | ||
{{CodeStart}} | {{CodeStart}} | ||
text$ = {{Text|<nowiki>"1.23Hello"</nowiki>|#FFB100}} | |||
number! = {{Cl|VAL}}(text$) | |||
{{Cl|PRINT}} number! | |||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}} | {{OutputStart}} | ||
Line 55: | Line 55: | ||
''Example 3:'' Converting literal and variable [[STRING|string]] values to numerical values. | ''Example 3:'' Converting literal and variable [[STRING|string]] values to numerical values. | ||
{{CodeStart}} | {{CodeStart}} | ||
a$ = {{Text|<nowiki>"33"</nowiki>|#FFB100}} | |||
{{Cl|PRINT}} {{Cl|VAL}}({{Text|<nowiki>"10"</nowiki>|#FFB100}}) + {{Cl|VAL}}(a$) + {{Text|1|#F580B1}} | |||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}} | {{OutputStart}} | ||
Line 70: | Line 70: | ||
''Example 4:'' Converting a hexadecimal value to decimal value using HEX$ with VAL. | ''Example 4:'' Converting a hexadecimal value to decimal value using HEX$ with VAL. | ||
{{CodeStart}} | {{CodeStart}} | ||
decnumber% = {{Text|96|#F580B1}} | |||
hexnumber$ = {{Text|<nowiki>"&H"</nowiki>|#FFB100}} + {{Cl|HEX$}}(decnumber%) {{Text|<nowiki>'convert decimal value to hex and add hex prefix</nowiki>|#919191}} | |||
{{Cl|PRINT}} hexnumber$ | |||
decimal% = {{Cl|VAL}}(hexnumber$) | |||
{{Cl|PRINT}} decimal% | |||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}} | {{OutputStart}} |
Revision as of 18:06, 6 June 2025
The VAL function returns the decimal numerical equivalent value of a STRING numerical value.
Syntax
- numericValue = VAL(stringValue$)
Parameters
- stringValue$ is a STRING containing a sequence of digit characters which shall be converted into a numeric value.
- May also contain the letters E, D and F for an exponent value in the scientific notation
- The number as well as a given exponent value may be prepended with a plus(+) or minus(-) sign and any spaces in between the characters are ignored.
- The string may also start with &B, &H or &O to denote a binary, hexadecimal or octal number string respectively. However, only leading spaces (before the & character) are ignored here.
Description
- The regular (decimal) conversion stops at non-numeric characters except for spaces and the letters E, D and F for specifying an exponent. That is, if the first non-space string character is not a digit, then VAL returns zero(0).
- For binary, hexadecimal or octal strings conversion stops at digits or letters which are invalid in the respective number base system.
- Note that this function cannot be used to return the ASCII value of a string character, use the ASC (function) for that purpose.
Availability
-
all
-
all
-
yes
-
yes
-
yes
Examples
Example 1: Differences in values returned with QBasic and QB64:
PRINT VAL("&H") '203 in QB, 0 in QB64 PRINT VAL("&HFFFF") ' -1 QB, 65535 in QB64 PRINT VAL("&HFFFF&") '65535 in both |
- 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
text$ = "1.23Hello" number! = VAL(text$) PRINT number! |
1.23 |
Example 3: Converting literal and variable string values to numerical values.
a$ = "33" PRINT VAL("10") + VAL(a$) + 1 |
44 |
- 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.
decnumber% = 96 hexnumber$ = "&H" + HEX$(decnumber%) 'convert decimal value to hex and add hex prefix PRINT hexnumber$ decimal% = VAL(hexnumber$) PRINT decimal% |
&H60 96 |
- 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