Sign in Join
Wiki copytemporary

Fractions/fi: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Fractions/fi

OldNewLine
1+## Mikä on Fractions unit?
2+
3+Fractions on [[Unit/fi|käännösyksikko (unit)]] joka suorittaa laskuja murtoluvuilla.\
4+Käännösyksikkö syntyi keskustelun pohjalta [discussion on the Lazarus forum](http://forum.lazarus.freepascal.org/index.php/topic,27805.0.html).
5+
6+## Subversion
7+
8+Löydät Fractions unitin
9+
10+`svn `[`https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fractions`](https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fractions)
11+
12+Tai voit vain katsella sitä viewcv:n avulla
13+
14+[[`http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fractions/`](http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fractions/)](http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fractions/)
15+
16+## Ominaisuudet
17+
18+### TFraction tyyppi
19+
20+TFraction on niin sanottu "advanced record": eli [[Record/fi|tietue]] laajennettuna [[Method|metodeilla]] ja [[Property|ominaisuuksilla (Property)]] .
21+
22+#### TFraction ominaisuudet
23+
24+- property Numerator: Int64;
25+ - Asettaa ja hakee murtoluvun osoittajan (jaettavan).
26+- property Denominator: Int64;
27+ - Asettaa ja hakee murtoluvun nimittäjän (jakajan).
28+ - Jos jakajaa yritetään laittaa nollaksi (0) niin nostaa EZeroDivide poikkeuksen.
29+
30+#### TFraction metodit
31+
32+- procedure Normalize;
33+ - Supistaa murtoluvut jakamalla osoittajan ja nimittäjän [[Greatest common divisor/fi|suurimmalla yhteisellä tekijällä]], esim. murtoluvusta 10/5 tulee 2/1.
34+- function ToString: String;
35+ - Palauttaa merkkijonoesityksen murtoluvusta (supistusta ei tehdä), esim. kun osoittaja on 10 ja nimittäjä on 5 niin funktio palauttaa '10/5'.
36+- function Resolve: String;
37+ - Palauttaa merkkijonoesityksen murtoluvusta <b>supistamisen jälkeen </b>, esim. kun osoittaja on 4 ja nimittäjä on 3 niin funktio palauttaa '1 1/3'.
38+- function ToFloat: Double;
39+ - Palauttaa liukuluku esityksen murtoluvusta, esim kun Numerator (osoittaja) = 1 ja Denominator (nimittäjä) = 3 niin funktio palauttaa 0.3333333333333
40+
41+### Murtolukujen tekeminen
42+
43+- function Fraction(ANumerator, ADenominator: Int64): TFraction;
44+ - Luo murtoluvun osoittaja/nimittäjä, esim. Fraction(1,2) tekee murtoluvun 1/2 (puoli).
45+- function Fraction(AIntPart, ANumerator, ADenominator: Int64): TFraction;
46+ - Luo murtoluvun, esim. Fraction(1,1,2) antaa murtoluvun 1 1/2 (yksi ja puoli).
47+
48+### Tuetut laskut
49+
50+#### Operaattorit (Overloaded operators)
51+
52+- = (yhtäsuuri)
53+
54+- \< (pienempi kuin)
55+
56+- \> (suurempi kuin)
57+
58+- \<= (pienempi tai yhtäsuuri kuin)
59+
60+- \>= (suurempi tai yhtäsuuri kuin)
61+
62+-
63+ = (saa arvokseen): Tämä sallii kokonaisluvun ( Int64 ) tai merkkijonon arvon antamisen muuttujalle
64+
65+- \+ (lisää)
66+
67+- \- (vähennä)
68+
69+- * (kertominen): overloaded for fractions and Int64
70+
71+- / (jakolasku): overloaded for fractions and Int64
72+
73+- ** (potenssiin korotus): only allowed for Integers (on right hand side)
74+
75+#### Matemaattiset funktiot
76+
77+- function Min(a, b: TFraction): TFraction; inline; overload;
78+ - Palauttaa a:n jos a \<= b muuten palauttaa b:n.
79+- function Max(a, b: TFraction): TFraction; inline; overload;
80+ - palauttaa a:n jos a \>= b muuten palauttaa b:n.
81+- function InRange(const AValue, AMin, AMax: TFraction): Boolean; inline; overload;
82+ - Palauttaa true:n jos AValue \>= AMin ja AValue \<= AMax muuten palauttaa false:n
83+- function EnsureRange(const AValue, AMin, AMax: TFraction): TFraction; inline; overload;
84+ - Palauttaa AMin:n jos AValue \< AMin muuten palauttaa AMax vain jos AValue \> AMax muussa tapauksessa palauttaa AValue:n
85+- function Sign(const AValue: TFraction): TValueSign; inline; overload;
86+ - Palauttaa NegativeValue:n jos AValue \< 0 muuten palauttaa PositiveValue:n jos AValue \> 0 muussa tapauksessa palauttaa AZeroValue:n
87+- function IsZero(const AValue: TFraction): Boolean; overload;
88+ - Palauttaa true:n jos AValue on nolla (0) muuten palauttaa false:n.
89+- function Abs(const AValue: TFraction): TFraction; overload;
90+ - Palauttaa AValue jos AValue \>= 0 muuten palauttaa -1*AValue.
91+
92+### Yleiskäyttöiset funktiot
93+
94+- function GreatestCommonDivisor(a, b: Int64): Int64;
95+ - Palauttaa lukujen a ja b [[Greatest common divisor/fi|suurimman yhteisen tekijän]].
96+- function Floor(D: Double): Int64; overload;
97+ - Palauttaa luvun D kokonaisosan (vähentää lukua yhdellä jos luku on pienempi kuin nolla). Niin sanottu lattiafunktio.
98+
99+## Muunnos rutiinit
100+
101+- function FloatToFraction(Value, Precision: Double): TFraction;
102+ - Palauttaa Value:n likiarvon murtolukuna, esim. FloatTofraction(0.5,0.01) palauttaa 1/2 (puolikkaan)
103+ - Precision määrittää murtoluvun hyväksyttävän arvon. Hyväksyttävänä arvona pidetään arvoa joka on Abs(Result) - Abs(Value) \<= Precision.
104+ - Precision määrittämiä suurusluokkia on 15.
105+ - FloatToFraction on tosiasiassa funktiomuuttuja joka on alustettu MF_FloatTofraction() funktiolla. Voit liittää sen tilalle jonkun muun funktion jos haluat.
106+- function TryFloatToFraction(Value, Precision: Double; out F: TFraction; AcceptPrecisionError: Boolean): Boolean;
107+ - Palautettava murtoluku F riippuu annetusta AcceptPrecisionError arvosta:
108+ - Jos AcceptPrecisionError on True niin funktio palauttaa True:n jos likiarvo löydettiin
109+ - Jos AcceptPrecisionError on False niin funktio palauttaa True:n jos likiarvo löydettiin ja Abs(Abs(Result)-Abs(Value)) \<= Precision
110+ - Palautettava murtoluku F on hyväsyttävissä ainoastaan silloin kun funktion palauttaa True:n
111+- function FloatToFractionDef(Value, Precision: Double; Def: TFraction; AcceptPrecisionError: Boolean): TFraction;
112+ - Palauttaa Value:n likiarvon murtolukuna jos TryFloatToFraction(Value, Precision, F, AcceptPrecisionError: Boolean) onnistui, muuten palauttaa Def:n
113+- function StrToFraction(const S: String): TFraction;
114+ - Palauttaa murtoluvun joka on merkkijonossa S, nostaa EConvertError poikkeuksen jos muunnos ei onnistu.
115+- function TryStrToFraction(const S: String; out F: TFraction): Boolean;
116+ - Palauttaa True:n jos merkkijono S voidaan muuntaa murtoluvuksi F, muuten palauttaa False:n.
117+ - Palautettava murtoluku F on hyväsyttävissä ainoastaan silloin kun funktion palauttaa True:n.
118+- function StrToFractionDef(const S: String; Def: TFraction): TFraction;
119+ - Palauttaa merkkijonon murtolukuna jos muunnos onnistuu, muuten palauttaa Def:n.
120+
121+## Esimerkkiohjelma
122+
123+``` pascal
124+
125+program example;
126+
127+{$mode objfpc}{$H+}
128+{$apptype console}
129+
130+uses
131+ Classes, sysutils, fractions, math;
132+
133+var
134+ F1, F2: TFraction;
135+ D, Prec: Double;
136+ i: Integer;
137+begin
138+ F1 := Fraction(1,1,3); // 1 1/3
139+ F2 := Fraction(4,3); // 4/3
140+ writeln('F1.ToString = ',F1.ToString); // '4/3'
141+ writeln('F1.Resolve = ',F1.Resolve); // '1 1/3'
142+ writeln('F1.ToFloat = ',F1.ToFloat:16:16); // 1.3333333333333333
143+ writeln('F2.ToString = ',F2.ToString); // '4/3'
144+ writeln('(F1 = F2) = ',F1=F2); //True
145+
146+ F1 := Fraction(1,2);
147+ F2 := Fraction(1,3);
148+ writeln(F1.ToString,' * ',F2.ToString,' = ',(F1*F2).Resolve); // '1/6'
149+ writeln(F1.ToString,' / ',F2.ToString,' = ',(F1/F2).Resolve); // '1 1/2'
150+ writeln(F1.ToString,' + ',F2.ToString,' = ',(F1+F2).Resolve); // '5/6'
151+ writeln(F1.ToString,' - ',F2.ToString,' = ',(F1-F2).Resolve); // '1/6'
152+ writeln(F1.ToString,' ** 2 = ',(F1**2).Resolve); // '1/6'
153+
154+ D := 0.25;
155+ F1 := FloatToFraction(D, 0.000001);
156+ writeln('FloatTofraction(0.25) -> ',F1.ToString); // '1/4'
157+ writeln;
158+ writeln('Approximations of Pi:');
159+ writeln(' [Pi = ',Pi:16:16,']');
160+ Prec := 1.0;
161+ for i := 1 to 10 do
162+ begin
163+ Prec := Prec / 10;
164+ F2 := FloatTofraction(Pi, Prec);
165+ writeln('FloatTofraction(Pi,',Prec:10:10,') = ',Format('%-13s',[F2.Resolve]),' [',F2.ToFloat:16:16,']');
166+ end;
167+end.
168+```
169+
170+Ohjelma tulostaa:
171+
172+ F1.ToString = 4/3
173+ F1.Resolve = 1 1/3
174+ F1.ToFloat = 1.3333333333333333
175+ F2.ToString = 4/3
176+ (F1 = F2) = TRUE
177+ 1/2 * 1/3 = 1/6
178+ 1/2 / 1/3 = 1 1/2
179+ 1/2 + 1/3 = 5/6
180+ 1/2 - 1/3 = 1/6
181+ 1/2 ** 2 = 1/4
182+ FloatTofraction(0.25) -> 1/4
183+
184+ Approximations of Pi:
185+ [Pi = 3.1415926535897932]
186+ FloatTofraction(Pi,0.1000000000) = 3 1/7 [3.1428571428571428]
187+ FloatTofraction(Pi,0.0100000000) = 3 1/7 [3.1428571428571428]
188+ FloatTofraction(Pi,0.0010000000) = 3 16/113 [3.1415929203539825]
189+ FloatTofraction(Pi,0.0001000000) = 3 16/113 [3.1415929203539825]
190+ FloatTofraction(Pi,0.0000100000) = 3 16/113 [3.1415929203539825]
191+ FloatTofraction(Pi,0.0000010000) = 3 16/113 [3.1415929203539825]
192+ FloatTofraction(Pi,0.0000001000) = 3 4703/33215 [3.1415926539214212]
193+ FloatTofraction(Pi,0.0000000100) = 3 4703/33215 [3.1415926539214212]
194+ FloatTofraction(Pi,0.0000000010) = 3 4703/33215 [3.1415926539214212]
195+ FloatTofraction(Pi,0.0000000001) = 3 14093/99532 [3.1415926536189365]
196+
197+---
198+*From the Free Pascal wiki, page "Fractions/fi", as it stood on 2020-01-24 after a change by Bart, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history