Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
(interest+1)**payments # Potenzberechnung geht auch mit BigDecimal
monthly = (principal * interest * x)/(x-1) # Monatliche Rate berechnen
monthly = monthly.round(2) # Auf zwei Dezimalstellen runden
monthly = monthly.to_s("f") # In lesbaren String umwandeln
    Per ri erhalten Sie mehr Informationen zur
BigDecimal
-API, eine komplette Dokumentation finden Sie in der Datei ext/bigdecimal/bigdecimal_en.html in der Ruby-Quelldistribution.
    9.3.4 Komplexe Zahlen
    Sie können komplexe Zahlen (die Summe einer reellen Zahl und einer imaginären Zahl) mit der Klasse
Complex
aus der Standardbibliothek darstellen und verarbeiten. Wie die Klasse
BigDecimal
definiert die Klasse
Complex
alle normalen arithmetischen Operatoren, und sie passt sogar die Methoden aus dem Modul
Math
so an, dass sie mit komplexen Zahlen umgehen können. Hier sehen Sie ein paar Beispiele:
require "complex" # Complex ist Teil der Standardbibliothek
c = Complex(0.5,-0.2) # .5-.2i.
z = Complex.new(0.0, 0.0) # Complex.new geht auch, ist aber nicht notwendig
10.times { z = z*z + c } # Iteration zum Berechnen von Juliamengen
magnitude = z.abs # Betrag einer komplexen Zahl
x = Math.sin(z) # Trigonometrische Funktionen mit komplexen Zahlen
Math.sqrt(-1.0).to_s # => "1.0i": Wurzel von −1
Math.sqrt(-1.0)==Complex::I # => true
    9.3.5 Rationale Zahlen
    Die Klasse
Rational
aus der Standardbibliothek repräsentiert rationale Zahlen (die Quotienten zweier Ganzzahlen). Sie definiert arithmetische Operatoren für rationale Zahlen und funktioniert am besten mit der Bibliothek
mathn
, in der Ganzzahldivisionen umdefiniert werden, um rationale Zahlen zu erzeugen. Die Bibliothek
mathn
sorgt noch für eine Reihe anderer Dinge, um die Ruby-Arithmetik zu »vereinheitlichen« und die Klassen
Integer
,
Rational
und
Complex
besser zusammenarbeiten zu lassen:
require "rational" # Lädt die Bibliothek
penny = Rational(1, 100) # Ein Penny ist 1/100
require "mathn" # Integer-Division führt zu rationalen Werten
nickel = 5/100
dime = 10/100
quarter = 1/4
change = 2*quarter + 3*penny # Rationales Ergebnis: 53/100
(1/2 * 1/3).to_s # "1/6": mathn gibt Rationalzahlen als Brüche aus
    9.3.6 Vektoren und Matrizen
    Die Bibliothek
matrix
definiert die Klassen
Matrix
und
Vector
, um Matrizen und Vektoren durch Zahlen zu repräsentieren, aber auch, um Operatoren für Berechnungen mit ihnen bereitzustellen. Eine Abhandlung der linearen Algebra geht über das Ziel dieses Buches hinaus, aber der folgende Beispielcode nutzt die Klasse
Vector
, um einen zweidimensionalen Punkt zu speichern, und verwendet 2 ∞ 2-
Matrix
-Objekte für Skalierungs- und Rotationstransformationen des Punktes:
require "matrix"
# Stellt den Punkt (1,1) als Vektor [1,1] dar
unit = Vector[1,1]
# Einheitsmatrix
identity = Matrix.identity(2) # 2×2-Matrix
identity*unit == unit # true: keine Transformation
# Diese Matrix skaliert einen Punkt mit sx,sy.
sx,sy = 2.0, 3.0;
scale = Matrix[[sx,0], [0, sy]]
scale*unit # => [2.0, 3.0]: skalierter Punkt
# Diese Matrix rotiert gegen den Uhrzeigersinn um den Ursprung herum.
theta = Math::PI/2 # 90°
rotate = Matrix[[Math.cos(theta), -Math.sin(theta)],
     [Math.sin(theta), Math.cos(theta)]]
rotate*unit # [-1.0, 1.0]: 90°-Rotation
# Zwei Transformationen in einer
scale * (rotate*unit) # [-2.0, 3.0]
    9.3.7 Zufallszahlen
    Zufallszahlen werden in Ruby mit der globalen Funktion
Kernel.rand
erzeugt. Ohne Argumente wird eine Pseudozufallszahl als
Float
zurückgegeben, die größer oder gleich
0.0
und kleiner als
1.0
ist. Mit einem Integer-Argument
max
liefert sie eine Integer-Pseudozufallszahl größer oder gleich
0
und kleiner als
max
zurück, zum Beispiel:
rand # => 0.964395196505186
rand # => 0.390523655919935
rand(100) # => 81
rand(100) # => 32
    Wenn Sie eine reproduzierbare Sequenz von Pseudozufallszahlen benötigen (zum Beispiel zum Testen), geben Sie dem Zufallszahlengenerator einen Startwert (Seed) mit:
srand(0) # Seed
[rand(100),rand(100)] # => [44,47]: Pseudozufallssequenz
srand(0) # Seed zurücksetzen, um die Sequenz zu wiederholen
[rand(100),rand(100)] # => [44,47]

9.4 Datums- und Uhrzeitwerte
    Die Klasse
Time
repräsentiert Datums- und Uhrzeitwerte. Es handelt sich um eine dünne Schicht, die über die vom Betriebssystem bereitgestellte Funktionalität zum Systemdatum und der Uhrzeit gelegt wird. Auf manchen Plattformen kann es daher möglich sein, dass diese Klasse keine Datumswerte vor 1970 oder nach 2038 darstellen kann. Die Klassen
Date
und
DateTime
aus der

Weitere Kostenlose Bücher