VAL: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 41: Line 41:
{{PreStart}}
{{PreStart}}
'''Explanation'''
'''Explanation'''
  A quirk in QBasic returned '''VAL''' values of 203 for '''&''' and [[&H]] that was never
  A quirk in QBasic returned '''VAL''' values of 203 for '''&''' and [[&H]] that was
  fixed until PDS(7.1).
  never fixed until PDS(7.1).
{{PreEnd}}
{{PreEnd}}


Line 76: Line 76:
----
----


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}}
decnumber% = {{Text|96|#F580B1}}

Revision as of 18:59, 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. But note, the string cannot be an exponent only, i.e. if the first non-space and non-sign string character is not a digit, then VAL returns zero(0). Same happens if it is a sign or spaces only.
  • 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


Examples

Example 1
Differences in values returned with QBasic and QB64(PE).
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 in it.
text$ = "1.23Hello"
number! = VAL(text$)
PRINT number!
1.23

Example 3
Converting a literal and a variable string to numerical values and add them.
a$ = "33"
PRINT VAL("10") + VAL(a$) + 1
44
Explanation
 You have to convert the string to values in order to use them in a
 mathematical expression. If VAL wasn't used here, then the program
 would break with an error, as you can't add strings and numbers.

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.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link