ARTICLE: "number-strings" "Converting between numbers and strings"
"These words only convert between real numbers and strings. Complex numbers are constructed by the parser (" { $link "parser" } ") and printed by the prettyprinter (" { $link "prettyprint" } ")."
$nl
-"Note that only integers can be converted to and from strings using a representation other than base 10. Calling a word such as " { $link >oct } " on a float will give a result in base 10."
+"Integers can be converted to and from arbitrary bases. Floating point numbers can only be converted to and from base 10 and 16."
$nl
"Converting numbers to strings:"
{ $subsection number>string }
HELP: >hex
{ $values { "n" real } { "str" string } }
-{ $description "Outputs a string representation of a number using base 16." } ;
+{ $description "Outputs a string representation of a number using base 16." }
+{ $examples
+ { $example
+ "USING: math.parser prettyprint ;"
+ "3735928559 >hex ."
+ "\"deadbeef\""
+ }
+ { $example
+ "USING: math.parser prettyprint ;"
+ "-15.5 >hex ."
+ "\"-f.8p0\""
+ }
+} ;
HELP: string>float ( str -- n/f )
{ $values { "str" string } { "n/f" "a real number or " { $link f } } }
"More information on ratios can be found in " { $link "rationals" } ;
ARTICLE: "syntax-floats" "Float syntax"
-"Floating point literals must contain a decimal point, and may contain an exponent:"
+"Floating point literals can be input in base 10 or 16. Base 10 literals must contain a decimal point, and may contain an exponent after " { $snippet "e" } ":"
{ $code
"10.5"
"-3.1456"
"7.e13"
"1.0e-5"
}
-"There are three special float values:"
+"Base 16 literals use " { $snippet "p" } " instead of " { $snippet "e" } " for the exponent, which is still decimal:"
+{ $example
+ "10.125 HEX: 1.44p3 = ."
+ "t"
+}
+"Syntax for special float values:"
{ $table
{ "Positive infinity" { $snippet "1/0." } }
{ "Negative infinity" { $snippet "-1/0." } }
{ "Not-a-number" { $snippet "0/0." } }
}
-"A Not-a-number with an arbitrary payload can be parsed in:"
+"A Not-a-number with an arbitrary payload can also be parsed in:"
{ $subsection POSTPONE: NAN: }
"More information on floats can be found in " { $link "floats" } "." ;