Sign in Join
Wiki copytemporary

Fractions/fi: what changed

Revision 3 to 4. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-## Contents
2-
3- * 1 Mikä on Fractions unit?
4- * 2 Subversion
5- * 3 Ominaisuudet
6- * 3.1 TFraction tyyppi
7- * 3.1.1 TFraction ominaisuudet
8- * 3.1.2 TFraction metodit
9- * 3.2 Murtolukujen tekeminen
10- * 3.3 Tuetut laskut
11- * 3.3.1 Operaattorit (Overloaded operators)
12- * 3.3.2 Matemaattiset funktiot
13- * 3.4 Yleiskäyttöiset funktiot
14- * 4 Muunnos rutiinit
15- * 5 Esimerkkiohjelma
16-
171## Mikä on Fractions unit?
182
19-Fractions on [[Unit/fi|käännösyksikko (unit)]] joka suorittaa laskuja murtoluvuilla.
20-Käännösyksikkö syntyi keskustelun pohjalta [discussion on the Lazarus forum](<http://forum.lazarus.freepascal.org/index.php/topic,27805.0.html>).
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).
215
226## Subversion
237
24-Löydät Fractions unitin
25-```
26-svn <https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fractions>
27-```
8+Löydät Fractions unitin
289
29-Tai voit vain katsella sitä viewcv:n avulla
30-```
31-<http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fractions/>
32-```
10+`svn `[`https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fractions`](https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fractions)
3311
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+
3416## Ominaisuudet
3517
3618### TFraction tyyppi
3719
38-TFraction on niin sanottu "advanced record": eli [[Record/fi|tietue]] laajennettuna [[Method|metodeilla]] ja [[Property|ominaisuuksilla (Property)]] .
20+TFraction on niin sanottu "advanced record": eli [[Record/fi|tietue]] laajennettuna [[Method|metodeilla]] ja [[Property|ominaisuuksilla (Property)]] .
3921
4022#### TFraction ominaisuudet
4123
42- * property Numerator: Int64;
43- * Asettaa ja hakee murtoluvun osoittajan (jaettavan).
44- * property Denominator: Int64;
45- * Asettaa ja hakee murtoluvun nimittäjän (jakajan).
46- * Jos jakajaa yritetään laittaa nollaksi (0) niin nostaa EZeroDivide poikkeuksen.
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.
4729
4830#### TFraction metodit
4931
50- * procedure Normalize;
51- * Supistaa murtoluvut jakamalla osoittajan ja nimittäjän [[Greatest common divisor/fi|suurimmalla yhteisellä tekijällä]], esim. murtoluvusta 10/5 tulee 2/1.
52- * function ToString: String;
53- * Palauttaa merkkijonoesityksen murtoluvusta (supistusta ei tehdä), esim. kun osoittaja on 10 ja nimittäjä on 5 niin funktio palauttaa '10/5'.
54- * function Resolve: String;
55- * Palauttaa merkkijonoesityksen murtoluvusta **supistamisen jälkeen** , esim. kun osoittaja on 4 ja nimittäjä on 3 niin funktio palauttaa '1 1/3'.
56- * function ToFloat: Double;
57- * Palauttaa liukuluku esityksen murtoluvusta, esim kun Numerator (osoittaja) = 1 ja Denominator (nimittäjä) = 3 niin funktio palauttaa 0.3333333333333
58-
59-
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 supistamisen jälkeen , 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
6040
6141### Murtolukujen tekeminen
6242
63- * function Fraction(ANumerator, ADenominator: Int64): TFraction;
64- * Luo murtoluvun osoittaja/nimittäjä, esim. Fraction(1,2) tekee murtoluvun 1/2 (puoli).
65- * function Fraction(AIntPart, ANumerator, ADenominator: Int64): TFraction;
66- * Luo murtoluvun, esim. Fraction(1,1,2) antaa murtoluvun 1 1/2 (yksi ja puoli).
67-
68-
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).
6947
7048### Tuetut laskut
7149
7250#### Operaattorit (Overloaded operators)
7351
74- * = (yhtäsuuri)
75- * < (pienempi kuin)
76- * > (suurempi kuin)
77- * <= (pienempi tai yhtäsuuri kuin)
78- * >= (suurempi tai yhtäsuuri kuin)
79- * := (saa arvokseen): Tämä sallii kokonaisluvun ( Int64 ) tai merkkijonon arvon antamisen muuttujalle
80- * \+ (lisää)
81- * \- (vähennä)
82- * * (kertominen): overloaded for fractions and Int64
83- * / (jakolasku): overloaded for fractions and Int64
84- * ** (potenssiin korotus): only allowed for Integers (on right hand side)
52+- = (yhtäsuuri)
8553
86-#### Matemaattiset funktiot
54+- \< (pienempi kuin)
8755
88- * function Min(a, b: TFraction): TFraction; inline; overload;
89- * Palauttaa a:n jos a <= b muuten palauttaa b:n.
90- * function Max(a, b: TFraction): TFraction; inline; overload;
91- * palauttaa a:n jos a >= b muuten palauttaa b:n.
92- * function InRange(const AValue, AMin, AMax: TFraction): Boolean; inline; overload;
93- * Palauttaa true:n jos AValue >= AMin ja AValue <= AMax muuten palauttaa false:n
94- * function EnsureRange(const AValue, AMin, AMax: TFraction): TFraction; inline; overload;
95- * Palauttaa AMin:n jos AValue < AMin muuten palauttaa AMax vain jos AValue > AMax muussa tapauksessa palauttaa AValue:n
96- * function Sign(const AValue: TFraction): TValueSign; inline; overload;
97- * Palauttaa NegativeValue:n jos AValue < 0 muuten palauttaa PositiveValue:n jos AValue > 0 muussa tapauksessa palauttaa AZeroValue:n
98- * function IsZero(const AValue: TFraction): Boolean; overload;
99- * Palauttaa true:n jos AValue on nolla (0) muuten palauttaa false:n.
100- * function Abs(const AValue: TFraction): TFraction; overload;
101- * Palauttaa AValue jos AValue >= 0 muuten palauttaa -1*AValue.
56+- \> (suurempi kuin)
10257
103-
58+- \<= (pienempi tai yhtäsuuri kuin)
10459
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+
10592### Yleiskäyttöiset funktiot
10693
107- * function GreatestCommonDivisor(a, b: Int64): Int64;
108- * Palauttaa lukujen a ja b [[Greatest common divisor/fi|suurimman yhteisen tekijän]].
109- * function Floor(D: Double): Int64; overload;
110- * Palauttaa luvun D kokonaisosan (vähentää lukua yhdellä jos luku on pienempi kuin nolla). Niin sanottu lattiafunktio.
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.
11198
11299## Muunnos rutiinit
113100
114- * function FloatToFraction(Value, Precision: Double): TFraction;
115- * Palauttaa Value:n likiarvon murtolukuna, esim. FloatTofraction(0.5,0.01) palauttaa 1/2 (puolikkaan)
116- * Precision määrittää murtoluvun hyväksyttävän arvon. Hyväksyttävänä arvona pidetään arvoa joka on Abs(Result) - Abs(Value) <= Precision.
117- * Precision määrittämiä suurusluokkia on 15.
118- * FloatToFraction on tosiasiassa funktiomuuttuja joka on alustettu MF_FloatTofraction() funktiolla. Voit liittää sen tilalle jonkun muun funktion jos haluat.
119- * function TryFloatToFraction(Value, Precision: Double; out F: TFraction; AcceptPrecisionError: Boolean): Boolean;
120- * Palautettava murtoluku F riippuu annetusta AcceptPrecisionError arvosta:
121- * Jos AcceptPrecisionError on True niin funktio palauttaa True:n jos likiarvo löydettiin
122- * Jos AcceptPrecisionError on False niin funktio palauttaa True:n jos likiarvo löydettiin ja Abs(Abs(Result)-Abs(Value)) <= Precision
123- * Palautettava murtoluku F on hyväsyttävissä ainoastaan silloin kun funktion palauttaa True:n
124- * function FloatToFractionDef(Value, Precision: Double; Def: TFraction; AcceptPrecisionError: Boolean): TFraction;
125- * Palauttaa Value:n likiarvon murtolukuna jos TryFloatToFraction(Value, Precision, F, AcceptPrecisionError: Boolean) onnistui, muuten palauttaa Def:n
126- * function StrToFraction(const S: String): TFraction;
127- * Palauttaa murtoluvun joka on merkkijonossa S, nostaa EConvertError poikkeuksen jos muunnos ei onnistu.
128- * function TryStrToFraction(const S: String; out F: TFraction): Boolean;
129- * Palauttaa True:n jos merkkijono S voidaan muuntaa murtoluvuksi F, muuten palauttaa False:n.
130- * Palautettava murtoluku F on hyväsyttävissä ainoastaan silloin kun funktion palauttaa True:n.
131- * function StrToFractionDef(const S: String; Def: TFraction): TFraction;
132- * Palauttaa merkkijonon murtolukuna jos muunnos onnistuu, muuten palauttaa Def:n.
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.
133120
134121## Esimerkkiohjelma
135-```
122+
123+``` pascal
124+
136125program example;
137-
138- {$mode objfpc}{$H+}
139- {$apptype console}
140-
141- uses
142- Classes, sysutils, fractions, math;
143-
144- var
145- F1, F2: TFraction;
146- D, Prec: Double;
147- i: Integer;
148- begin
149- F1 := Fraction(1,1,3); // 1 1/3
150- F2 := Fraction(4,3); // 4/3
151- writeln('F1.ToString = ',F1.ToString); // '4/3'
152- writeln('F1.Resolve = ',F1.Resolve); // '1 1/3'
153- writeln('F1.ToFloat = ',F1.ToFloat:16:16); // 1.3333333333333333
154- writeln('F2.ToString = ',F2.ToString); // '4/3'
155- writeln('(F1 = F2) = ',F1=F2); //True
156-
157- F1 := Fraction(1,2);
158- F2 := Fraction(1,3);
159- writeln(F1.ToString,' * ',F2.ToString,' = ',(F1*F2).Resolve); // '1/6'
160- writeln(F1.ToString,' / ',F2.ToString,' = ',(F1/F2).Resolve); // '1 1/2'
161- writeln(F1.ToString,' + ',F2.ToString,' = ',(F1+F2).Resolve); // '5/6'
162- writeln(F1.ToString,' - ',F2.ToString,' = ',(F1-F2).Resolve); // '1/6'
163- writeln(F1.ToString,' ** 2 = ',(F1**2).Resolve); // '1/6'
164-
165- D := 0.25;
166- F1 := FloatToFraction(D, 0.000001);
167- writeln('FloatTofraction(0.25) -> ',F1.ToString); // '1/4'
168- writeln;
169- writeln('Approximations of Pi:');
170- writeln(' [Pi = ',Pi:16:16,']');
171- Prec := 1.0;
172- for i := 1 to 10 do
173- begin
174- Prec := Prec / 10;
175- F2 := FloatTofraction(Pi, Prec);
176- writeln('FloatTofraction(Pi,',Prec:10:10,') = ',Format('%-13s',[F2.Resolve]),' [',F2.ToFloat:16:16,']');
177- end;
178- end.
179-```
180126
181-Ohjelma tulostaa:
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.
182168```
183-F1.ToString = 4/3
169+
170+Ohjelma tulostaa:
171+
172+ F1.ToString = 4/3
184173 F1.Resolve = 1 1/3
185174 F1.ToFloat = 1.3333333333333333
186175 F2.ToString = 4/3
187176 (F1 = F2) = TRUE
188177 1/2 * 1/3 = 1/6
189178 1/2 / 1/3 = 1 1/2
190179 1/2 + 1/3 = 5/6
191180 1/2 - 1/3 = 1/6
192181 1/2 ** 2 = 1/4
193182 FloatTofraction(0.25) -> 1/4
194-
183+
195184 Approximations of Pi:
196185 [Pi = 3.1415926535897932]
197186 FloatTofraction(Pi,0.1000000000) = 3 1/7 [3.1428571428571428]
198187 FloatTofraction(Pi,0.0100000000) = 3 1/7 [3.1428571428571428]
199188 FloatTofraction(Pi,0.0010000000) = 3 16/113 [3.1415929203539825]
200189 FloatTofraction(Pi,0.0001000000) = 3 16/113 [3.1415929203539825]
201190 FloatTofraction(Pi,0.0000100000) = 3 16/113 [3.1415929203539825]
202191 FloatTofraction(Pi,0.0000010000) = 3 16/113 [3.1415929203539825]
203192 FloatTofraction(Pi,0.0000001000) = 3 4703/33215 [3.1415926539214212]
204193 FloatTofraction(Pi,0.0000000100) = 3 4703/33215 [3.1415926539214212]
205194 FloatTofraction(Pi,0.0000000010) = 3 4703/33215 [3.1415926539214212]
206195 FloatTofraction(Pi,0.0000000001) = 3 14093/99532 [3.1415926536189365]
207-```
208196
209197---
210-*From the Free Pascal wiki, page "Fractions/fi", as the Internet Archive kept it on 2022-07-04. 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).*
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