Difference between revisions of "VAL"

From QB64 Wiki
Jump to navigation Jump to search
m (Text replacement - "Qbasic" to "QBasic")
m (Add Page Sections/Fix example highlighting/linking)
 
Line 1: Line 1:
The '''VAL''' Function returns the decimal numerical equivalent value of a [[STRING]] numerical value.
+
The [[VAL]] Function returns the decimal numerical equivalent value of a [[STRING]] numerical value.
  
  
 
{{PageSyntax}}
 
{{PageSyntax}}
:: value = VAL(string_value$)
+
:: value = [[VAL]](string_value$)
  
  
 +
{{PageDescription}}
 
* VAL converts string numbers to numerical values including decimal point values and prefixed "[[&H]]" hexadecimal, "[[&O]]" octal.  
 
* 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.
 
* VAL conversion stops at non-numeric characters except for letter "D" or "E" exponential notation values.
Line 17: Line 18:
  
  
 +
{{PageExamples}}
 
''Example 1:'' Differences in values returned with QBasic and QB64:
 
''Example 1:'' Differences in values returned with QBasic and QB64:
 
{{CodeStart}} '' ''
 
{{CodeStart}} '' ''
Line 29: Line 31:
 
{{CodeStart}} '' ''
 
{{CodeStart}} '' ''
 
  text$ = "1.23Hello"
 
  text$ = "1.23Hello"
  number! = VAL(text$)
+
  number! = {{Cl|VAL}}(text$)
  PRINT number! '' ''
+
  {{Cl|PRINT}} number! '' ''
 
{{CodeEnd}}
 
{{CodeEnd}}
 
{{OutputStart}}
 
{{OutputStart}}
Line 40: Line 42:
 
{{CodeStart}} '' ''
 
{{CodeStart}} '' ''
 
  a$ = "33"
 
  a$ = "33"
  PRINT VAL("10") + VAL(a$) + 1 '' ''
+
  {{Cl|PRINT}} {{Cl|VAL}}("10") + {{Cl|VAL}}(a$) + 1 '' ''
 
{{CodeEnd}}
 
{{CodeEnd}}
 
{{OutputStart}}
 
{{OutputStart}}
Line 56: Line 58:
 
  decnumber% = 96
 
  decnumber% = 96
 
  hexnumber$ = "&H" + {{Cl|HEX$}}(decnumber%)  'convert decimal value to hex and add hex prefix
 
  hexnumber$ = "&H" + {{Cl|HEX$}}(decnumber%)  'convert decimal value to hex and add hex prefix
  PRINT hexnumber$
+
  {{Cl|PRINT}} hexnumber$
 
  decimal% = {{Cl|VAL}}(hexnumber$)
 
  decimal% = {{Cl|VAL}}(hexnumber$)
  PRINT decimal% '' ''
+
  {{Cl|PRINT}} decimal% '' ''
 
{{CodeEnd}}
 
{{CodeEnd}}
 
{{OutputStart}}
 
{{OutputStart}}
Line 67: Line 69:
  
  
''See also:''
+
{{PageSeeAlso}}
 
* [[STR$]], [[HEX$]]
 
* [[STR$]], [[HEX$]]
 
* [[OCT$]], [[ASC]]
 
* [[OCT$]], [[ASC]]

Latest revision as of 16:38, 28 February 2021

The VAL Function returns the decimal numerical equivalent value of a STRING numerical value.


Syntax

value = VAL(string_value$)


Description

  • 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: VAL("9D4") = 90000
  • 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 strings: value% = VAL("&HFFFF") = -1


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



Navigation:
Keyword Reference - Alphabetical
Keyword Reference - By Usage
Main Wiki Page