Difference between revisions of "Real"
(Real is not a rational number (see: https://en.wikipedia.org/wiki/Rational_number)) |
(partially undo revision 01CC7B by Bart: we should stress that not all real numbers can be stored; resolve revision 024E45 by Alextp; remove non-standard example of `0.` [real literal without at least one digit after the decimal point]; add →see also: Fractions) |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Real}} | {{Real}} | ||
− | <syntaxhighlight lang="pascal" | + | <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> is a [[Standard type|standard type]] of the [[Pascal]] programming language. |
+ | Despite its name, the data type <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> only provides a “reasonable approximation” of ℝ, the set of real numbers. | ||
+ | For example the real number <math>\sqrt{2}</math> may have the <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> value of <syntaxhighlight lang="pascal" inline>1.4</syntaxhighlight> in Pascal. | ||
== usage == | == usage == | ||
− | Floating-point literals can be assigned to <syntaxhighlight lang="pascal" | + | Floating-point literals can be assigned to <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> variables. |
<syntaxhighlight lang="pascal" line> | <syntaxhighlight lang="pascal" line> | ||
program realDemo(input, output, stderr); | program realDemo(input, output, stderr); | ||
Line 12: | Line 14: | ||
begin | begin | ||
− | r := 0.; | + | r := 0.0; { r becomes zero } |
writeLn(r, ' ', r:8:4); | writeLn(r, ' ', r:8:4); | ||
− | r := 1e2; | + | r := 1e2; { r becomes 1*(10^2) [a hundred] } |
writeLn(r, ' ', r:8:4); | writeLn(r, ' ', r:8:4); | ||
− | r := r / r; | + | r := r / r; { r becomes one } |
writeLn(r, ' ', r:8:4); | writeLn(r, ' ', r:8:4); | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | <syntaxhighlight lang="pascal" inline>real</syntaxhighlight>, like all floating-point types, supports [[Slash#division|<syntaxhighlight lang="pascal" inline>/</syntaxhighlight> division operator]], while integer types support <syntaxhighlight lang="pascal" inline>div</syntaxhighlight>-operator. | |
== internal representation == | == internal representation == | ||
− | The internal representation of the type <syntaxhighlight lang="pascal" | + | The internal representation of the type <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> (i.e. number of bytes and byte ordering) and the resulting range and precision are platform dependent. |
− | Quote from the “FreePascal Programmer's Manual” (Chapter 8.2.5 [https://www.freepascal.org/docs-html/prog/ | + | Quote from the “FreePascal Programmer's Manual” (Chapter 8.2.5 [https://www.freepascal.org/docs-html/prog/progsu158.html Floating point types]): |
<blockquote> | <blockquote> | ||
− | Contrary to Turbo Pascal, where the <syntaxhighlight lang="pascal" | + | Contrary to Turbo Pascal, where the <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> type had a special internal format, under Free Pascal the <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> type simply maps to one of the other real types. |
− | It maps to the [[Double|<syntaxhighlight lang="pascal" | + | It maps to the [[Double|<syntaxhighlight lang="pascal" inline>double</syntaxhighlight> type]] on processors which support floating point operations, while it maps to the [[Single|<syntaxhighlight lang="pascal" inline>single</syntaxhighlight> type]] on processors which do not support floating point operations in hardware. |
</blockquote> | </blockquote> | ||
== alternatives == | == alternatives == | ||
− | Instead of specifying <syntaxhighlight lang="pascal" | + | Instead of specifying <syntaxhighlight lang="pascal" inline>real</syntaxhighlight> in your code, write {{Doc|package=RTL|unit=system|identifier=valreal|text=<syntaxhighlight lang="pascal" inline>ValReal</syntaxhighlight>}}, a type alias {{gitlab|repository|FPC|release_3_2_0/rtl/inc/systemh.inc#L123-332|defined by}} the [[System unit]]. |
− | It automatically maps to the largest available floating point type available. | + | It automatically maps to the largest available floating point type available: <syntaxhighlight lang="pascal" inline>single</syntaxhighlight>, <syntaxhighlight lang="pascal" inline>double</syntaxhighlight> or <syntaxhighlight lang="pascal" inline>extended</syntaxhighlight>. |
+ | |||
+ | == see also == | ||
+ | * [[Fractions]] | ||
{{Data types}} | {{Data types}} |
Latest revision as of 17:32, 25 January 2023
│
Deutsch (de) │
English (en) │
français (fr) │
русский (ru) │
real
is a standard type of the Pascal programming language.
Despite its name, the data type real
only provides a “reasonable approximation” of ℝ, the set of real numbers.
For example the real number [math]\displaystyle{ \sqrt{2} }[/math] may have the real
value of 1.4
in Pascal.
usage
Floating-point literals can be assigned to real
variables.
1program realDemo(input, output, stderr);
2
3var
4 r: real;
5
6begin
7 r := 0.0; { r becomes zero }
8 writeLn(r, ' ', r:8:4);
9
10 r := 1e2; { r becomes 1*(10^2) [a hundred] }
11 writeLn(r, ' ', r:8:4);
12
13 r := r / r; { r becomes one }
14 writeLn(r, ' ', r:8:4);
15end.
real
, like all floating-point types, supports /
division operator, while integer types support div
-operator.
internal representation
The internal representation of the type real
(i.e. number of bytes and byte ordering) and the resulting range and precision are platform dependent.
Quote from the “FreePascal Programmer's Manual” (Chapter 8.2.5 Floating point types):
Contrary to Turbo Pascal, where the
real
type had a special internal format, under Free Pascal thereal
type simply maps to one of the other real types. It maps to thedouble
type on processors which support floating point operations, while it maps to thesingle
type on processors which do not support floating point operations in hardware.
alternatives
Instead of specifying real
in your code, write ValReal
, a type alias defined by the System unit.
It automatically maps to the largest available floating point type available: single
, double
or extended
.
see also
simple data types |
|
---|---|
complex data types |