Microsoft entlässt bis zu 18000 Mitarbeiter nach Milliardenverlust

English

Wie es aussieht, ist die Idee von Stephen Elop und Steve Ballmer, die Mobilfunksparte von Nokia auszuschlachten und damit für MS-Windows als Mobiltelefonbetriebssystem einen Fuß in die Tür zu bekommen, nicht aufgegangen und wird jetzt gestoppt.
Für die durch Microsoft von Nokia übernommene Mobiltelefonsparte kündigte Microsoft-CEO Satya Nadella an, dass Milliarden abgeschrieben werden und dass bis zu 18000 Mitarbeiter entlassen werden sollen. Dies wird über die Hälfte der zu Microsoft gekommenen ehemaligen Nokia-Mitarbeiter betreffen und auch in anderen Teilen von Microsoft findet ein größerer Personalabbau statt. Auch Stephen Elop gehört übrigens zu den entlassenen Mitarbeitern.
Andererseits sieht es danach aus, dass Nokia wieder in die Mobiltelefon-Entwicklung einsteigen wird, zu dem Zeitpunkt, zu dem der mit Microsoft geschlossene Vertrag das erlaubt. Viele vermuten, dass irgendwann Jolla von Nokia übernommen werden könnte, wo viele ehemalige Nokia-Mitarbeiter gelandet sind und wo man für eine Nischenmarkt aussichtsreiche Ideen aufgegriffen und weiterentwickelt hat, die bei Nokia unter Stephen Elop abgebrochen wurden. Nokia wird sich als Nischenanbieter wahrscheinlich wieder einen kleinen Marktanteil sichern können, aber die Stellung als Marktführer, wie sie vor Elop bestand, oder auch nur als einer von vielen größeren Anbietern, wie sie vielleicht ohne Elop realistischerweise herausgekommen wäre, wird nicht wieder erreicht werden. Auch die eigene Produktion wird zugunsten einer Auslagerung an die üblichen ostasiatischen Elektronik-Fertiger kein Thema werden.
Problematisch bei solchen Fusionen oder Übernahmen von Abteilungen, ist dass sie oft nicht gut funktionieren, weil einerseits die Firmenkulturen verschieden sind und es so zu Reibungsverlusten kommt, die man sich in einem engen Markt nicht unbedingt leisten kann und andererseits ein Anbieter, der im Markt etabliert ist, nicht so einfach durch die übernehmende Firma ersetzt werden kann. Dafür muss man die Kunden erst einmal gewinnen und entsprechende Glaubwürdigkeit aufbauen.
Es hat ja solche Fälle gegeben, z.B. bei Kameraherstellern. Die Minolta Kamerasektion wurde von Sony übernommen und auch relativ bald aggressiv als Sony vermarktet. Sony hatte keine Glaubwürdigkeit für Kameras, außer natürlich für Video-Kameras, aber sie haben es sich mit interessanten Produkten und einer speziellen Nische erarbeitet. Für Spiegelreflexkameras hat Sony nicht den Namen wie Minolta, aber für kleine, leichte Digitalkameras, die zwischen Mobiltelefon und Spiegelreflexkamera positioniert sind, haben sie eine gute Stellung.
Pentax wurde von Ricoh übernommen, aber die Marke wird konsequent erhalten und gepflegt und noch als solche wahrgenommen. Auch da ist man nicht mehr Marktführer wie in den besten Zeiten, sondern ein stabiler Nischenanbieter, sofern man in diesem Markt so etwas überhaupt sagen kann.
Offensichtlich sind hier durch Missmanagement erst einmal viele Milliarden an Wert auf Seite von Nokia versenkt worden (und viele Mitarbeiter entlassen worden), dann ist aber die ganze Rechnung nicht aufgegangen und letztlich sind auf Microsofts Seite auch viele Milliarden versenkt worden, so viele, dass es auch in einer relativ großen Firma sichtbar und schmerzhaft ist. Steve Ballmer und Stephen Elop haben sich sicherlich ihren Ehrenplatz in der Liste der „Nieten in Nadelstreifen“ verdient.

Links:

Share Button

Zukunft für IT-Freiberufler

English

Einige von uns arbeiten in der Informatik.
Und dort gibt es doch einige Modelle. Man kann bei der Firma, der man die Arbeit erledigt, direkt angestellt sein. Man kann als Freiberufler, also entweder mit einem speziellen Freiberufler-Status oder mit einer eigenen Ein-Personen-Firma für seinen Kunden arbeiten. Oder man kann als Angestellter einer größeren Firma für deren Kunde arbeiten. Vielleicht gibt es noch ein paar Hybridmodelle, auf die ich hier aber nicht eingehen möchte.

Ich habe alle drei Modelle kennengelernt und bevorzuge es, als Freiberufler mit meiner eigenen Firma zu arbeiten. Ich denke, dass die Menschen verschieden sind und so verschiedene Präferenzen zwischen diesen Modellen haben. Und für ein IT-Projekt ist es gut, Mitarbeiter mit verschiedenen Stärken und Erfahrungen zu haben und diese bekommt man am besten, wenn man mindestens Freiberufler und eigene festangestellte Mitarbeiter kombiniert. Diese interessieren sich in der Regel am meisten für den Erfolg des Projekts, während bei externen Mitarbeitern, die bei einer großen Firma angestellt sind, tendenziell noch eine eigene, oft nicht mit den Projektinteressen kongruente Eigendynamik des Arbeitgebers ins Spiel kommen kann, aber nicht muss. Ihr kennt sicher positive und negative Beispiele aus eigener Erfahrung: Z.B. werden in einer frühen Projektphase externe Mitarbeiter gebracht, die sehr viel können, vielleicht aber auch gute Verkäufer sind oder sich irgendwo in der Struktur des Auftraggebers etablieren. Wenn dann der große Auftrag unter Dach und Fach ist, werden überwiegend Berufsanfänger gebracht. Oder generell Personen, die eine enorme Loyalität mit ihrem Arbeitgeber mitbringen, weil das Modell, bei dem man dauernd unterwegs zu Kunden ist, bei dem dem Kunden ein hoher Stundensatz verrechnet wird und bei dem man selbst gemessen an diesem Stundensatz nur ein sehr mittelmäßiges Gehalt bekommt, nur für eine längere Zeit funktioniert, wenn diese Mitarbeiter eine sehr große Loyalität zu ihrem Arbeitgeber oder eine Scheu vor dem Risiko haben, selbst als Freiberufler oder Selbständige zu arbeiten. Genau das kann auch einmal gut sein, um ein Team mit verschiedenen Leuten zu haben, die sich gegenseitig ergänzen, wenn es das Team vielfältiger macht. Je nach Lieferant kann man bei diesem Modell auch Leute bekommen, deren technisches und fachliches Wissen sehr gut ist. Auch das habe ich gesehen und man sollte sich als Auftraggeber genau anschauen, mit wem man zusammenarbeitet, damit sowohl die Firma als auch die Leute, die tatsächlich im Projekt mitarbeiten, gut sind. Mit kleineren Firmen macht man oft bessere Erfahrungen als mit internationalen Großkonzernen, aber es gibt gute und schlechte Beispiele in allen Kombinationen. Um aber ein gutes Mischungsverhältnis von verschiedenen Charakteren zu haben, wie es dem Projekt dienlich ist, ist es gut, bei den „externen“ Mitarbeitern mindestens teilweise auch auf Freiberufler zu setzen, die selbständig arbeiten und nicht bloß Kapazitätsplanung und Checklisten für Qualifikationen anzuschauen.

Eine gute Mischung aus internen und externen Mitarbeitern, gerne auch mit einer großen Mehrheit von „internen“, ist auch für ein Projekt vorteilhaft, weil es einerseits die Flexibilität gibt, die Teamgröße zu variieren, ohne Entlassungen vornehmen zu müssen. Es sollte auch für die Loyalität der internen Mitarbeiter förderlich sein, wenn Entlassungen eher die Ausnahme als die Regel sind. So wie interne Mitarbeiter die Strukturen, Anforderungen, Kunden, IT-Systeme und die verwendeten Werkzeuge über die Jahre sehr gut kennengelernt haben, ist es auch gut, dass „externe“ relative viele Firmen von innen gesehen haben und vielleicht Dinge sehen, die einem nicht mehr auffallen, wenn man sie seit Jahren gewohnt ist, die aber doch Verbesserungspotential bieten. So kommen auch neue Ideen ins Team.

Nun sehe ich, wie die Entwicklung in der Schweiz läuft und höre davon, wie sie in Deutschland läuft.

In der Schweiz wird es auch immer schwieriger. Es gab einige Schikanen, die man als „Kollateralschaden“, als „Kleinigkeiten“ oder auch „als gezielte Verhinderung der Konkurrenz durch Kleinfirmen seitens im Parlament gute verankerter Großfirmen“ interpretieren kann. Ich lasse das einmal offen.

Man muss in der Schweiz die Mehrwertsteuerfrage und die Frage der Sozialversicherungen regeln. Das sind Henne-Ei-Probleme. Um als Firma Mehrwertsteuer abrechnen zu können, muss man Kunden haben. Den Kunden muss man eine Rechnung schreiben und darauf muss entweder eine Mehrwertsteuer mit Mehrwertsteuernummer ausgewiesen sein, die dem Kunden nicht wehtut, wenn er selbst eine Firma ist, weil er sie weiterverrechnen kann, oder man weist sie nicht aus und hat dann das Problem, wenn man nachträglich mehrwertsteuerpflichtig wird. Das lässt sich lösen, wenn man der entsprechenden Stelle schreibt, dass man Kunden oder auch einen großen Kunden hat und gerne die Mehrwertsteuer bezahlen möchte, denn letztlich wollen die ja gerne das Geld einsammeln. Bei der Rentenversicherung und den anderen Sozialversicherungen ist es schwieriger. Die bekommen das Geld sowieso. Wenn man für die selbständig ist, dann zahlt man Arbeitgeber- und Arbeitnehmeranteile. Wenn nicht, zahlt der Kunde die Arbeitgeberanteile. Für die Abrechnung mit einem Kunden ist es schlicht unmöglich, eine Rechnung zu stellen und den Hinweis zu geben, dass man noch nicht weiß, ob irgendeine andere Stelle später noch Arbeitgeberanteile von Sozialversicherung einsammeln wird. Die Kunden gibt es dann schlicht und einfach nicht. Als Bäcker oder Maler hat man in der Regel schnell so viele Kunden, dass einem die Selbständigkeit abgenommen wird und keine Sozialversicherung wird beim Bäcker herausfinden, wer dort alles Brot gekauft hat, um den Kunden jeweils ein paar Franken Arbeitgeberanteile abzuknöpfen. Als Maler sollte man im ersten Jahr einfach ein paar kleine Kunden haben und nicht einen riesigen Millionenauftrag wie das Anstreichen eines Hochhauses, dann ist das auch gut. Als IT-Freiberufler hat man aber eher Projekte, wie das Anstreichen eines Hochhauses, wo viele Leute, interne Mitarbeiter des Kunden und man selbst und vielleicht auch andere „externe“ mehrere Monate oder gar Jahre an einem Projekt arbeiten. Es gibt Leute, die es geschafft haben, mit einer Einzelfirma als Freiberufler bei der Sozialversicherung als Selbständige anerkannt zu werden, aber das ist die Ausnahme. In der Praxis hat man zwei Wege, um diese Situation aufzulösen. Entweder lässt man sich bei einer Vermittlerfirma oder bei einer anerkannten Firma eines Kollegen temporär zu Konditionen anstellen, die komplementär zu dem Auftrag sind und umgeht das Problem auf diesem Weg. Leider bestehen einige Auftraggeber sogar auf diesem Modell. Das andere Modell, das letztlich interessanter ist, ist es eine eigene GmbH oder AG zu gründen und bei dieser angestellt zu sein. Dann ist auch alles sauber geregelt. Anders als in Deutschland kann man in der Schweiz kaum der Rentenversicherung entgehen, sie ist aber auch nicht so exzessiv ausgelegt wie in Deutschland, sondern zahlt eher eine Minimalrente, was die Höhe der Beiträge weniger schmerzhaft ausfallen lässt. Die mit dem Einkommen korrelierte Rente bekommt man in der Schweiz durch die sogenannte zweite Säule, auch Pensionskasse genannt, wo man ein Guthaben anspart, aus dem dieser zweite Teil der Rente gespeist wird.

Nun muss eine GmbH in der Schweiz ein Eigenkapital von mindestens 20’000 CHF haben, aber man musste nur die Hälfte einbringen. Die andere Hälfte musste man als Gründer nur garantieren, das heißt im Falle einer Insolvenz bis zu 10’000 CHF aus dem Privatvermögen aufbringen, um Schuldner zu bedienen. Später kam eine Änderung, dass man die 20’000 CHF von Anfang an komplett liefern musste, aber auch alle, die mit 10’000 gegründet hatten, die anderen 10’000 nachliefern mussten. Das klingt nicht so schlimm, letztlich war aber der bürokratische Aufwand recht hoch und erforderte ca. 1-2 Tage Arbeit und Gebühren, die mehr als ein Drittel der 10’000 CHF auffraßen. Letztlich ließ sich das mit Geld und Zeit bewerfen und war gelöst. Ebenso eine andere Änderung, die sogar nachvollziehbar war. Alle GmbHs und AGs brauchen eine Buchhaltung, die von jemandem mit entsprechendem Knowhow gemacht werden muss. Das ist normal und in allen Ländern so, die eine seriöse Wirtschaftsordnung haben. Große Firmen müssen diese Buchhaltung einer Revision durch eine weiter Buchhaltungsfirma unterziehen, bei kleineren ist das nicht nötig. Auch das ist sinnvoll. Früher war es so, dass man bei GmbHs grundsätzlich annahm, dass sie „klein“ sind und bei AGs, dass sie „groß“ sind. Das wurde dann korrigiert und Größe wurde nach rationaleren Kriterien gemessen. Nun musste man als GmbH aber aus der Revisionspflicht, die man erstmal aufs Auge gedrückt bekam, aussteigen, was wiederum ein größerer bürokratischer und finanzieller Akt war.

Die nächste Hürde war die Personalverleihbewilligung. Dafür muss man einen Antrag stellen, der etwa 46 Seiten lang war, und 50’000 CHF als Sicherheit hinterlegen, die man erst ein Jahr nach Verzicht auf die Personalverleihbewilligung zurückerhalten kann. Größere Firmen müssen die gleichen 50’000 CHF hinterlegen wie kleinere, nur wird sie bei größeren Firmen durch eine Garantie ersetzt, weil man diesen ohne weiteres glaubt, dass sie 50’000 CHF jederzeit aus dem Hut zaubern können. Auch diese Hürde lies sich mit Geld und Zeit bewerfen und überwinden. Und sie wurde nachträglich sogar wieder etwas abgeschwächt, allerdings in der Form, dass große Kunden trotzdem auf der Personalverleihbewilligung bestehen und dass manche Kantone sie nicht mehr gewähren, da sie ja nicht mehr nötig sei.

Jetzt bleibt zu hoffen, dass nicht eines Tages eine neue Schikane auftaucht, die sich schlicht und einfach nicht mehr realistisch überwinden lässt. Das faktische Berufsverbot für freiberufliche Informatiker. Ich möchte gerne viele Projekte sehen und die Flexibilität des Freiberuflers haben. Und ich kann mir nicht wirklich vorstellen, bei einer großen Firma angestellt und als „externer“ für Kunden zu arbeiten und mit dem Interessenkonflikt zu leben, loyal zu meinem Arbeitgeber zu sein und dem Interesse des Kunden und des Projekts zu dienen.

In dem Fall werde ich mir ein anderes Land in Europa suchen, wo ich weiterhin in der von mir bevorzugten Form arbeiten kann. In der Hinsicht bin ich flexibel und ich werde dann auch schnell die Sprache lernen, wenn ich sie noch nicht kann.

Share Button

Aktualisierung von WordPress

English

Die Aktualisierung von WordPress und Plugins hat hier nicht so gut funktioniert.

Es hat eine kleine Änderung geholfen, jetzt ist alles gut:

In .htaccess am Anfang diese Zeile

AddHandler php56-cgi .php

einfügen…
Danach funktionierten alle Updates gut.

Vielleicht hilft das auch anderen, die damit Probleme hatten….

Share Button

O’Reilly schließt Aktivitäten in Deutschland

This article is of minor relevance to English speaking readers, because it concerns the German O’Reilly books, while the English O’Reilly books continue to be available. So I will write in German.

Der O’Reilly-Verlag hatte jahrelang eine deutsche Niederlassung in Köln, wo deutschsprachige Versionen der beliebten Informatik-Fachbücher herausgegeben wurden. Dies waren oft Übersetzungen, aber in einigen Fällen auch exklusiv in deutscher Sprache erscheinende Titel oder doch Titel, die später vom Deutschen ins Englische übersetzt wurden. Der d-Punkt-Verlag wird die Aktivitäten übernehmen und auch unter dem Name O’Reilly weiterführen.

Mehr dazu unter
Informatik Aktuell.

Share Button

Kommentarfunktion

Die Kommentarfunktion geht bei jedem Upgrade von WordPress verloren.
Damit sie funktioniert, werden Schreibrechte im Verzeichnis
/wp-content/plugins/si-captcha-for-wordpress/captcha/cache
benötigt. Die muss man nach jedem Softwareupdate überprüfen.
Jetzt sollte die Kommentarfunktion wieder gehen.

Share Button

Rundung mit Summe

English

Häufig muss man einige Zahlen auf einmal runden, aber die Summe soll hinterher „aufgehen“. Das kann man „summenerhaltendes Runden“ nennen, wobei unter Umständen auch die Summe gerundet wird. Der häufigste Fall sind Prozentwerte und wenn die gerundeten Zahlen nicht zusammen 100% ergeben, versteht das niemand. Da kann es schon besser sein, etwas schwieriger verständliche Dinge hinter den Kulissen zu tun. Kurz gesagt ist unsere Frage, ob die Rundung ein Endomorphismus der additiven Gruppe ist. Das bedeutet, dass \bigwedge_{x,y\in M} r(x+y)=r(x)+r(y). Auf den resten Blick sieht das vernünftig aus und die Fehler heben sich ja oft irgendwie weg. Aber wir können für eine gängige Rundungsmethode ein Gegenbeispiel finden: x=1.4, y=2.3, z=3.3. Wir haben x+y+z=7. Jetzt wird das gerundet und ergibt r(x)=1 \wedge r(y)=2 \wedge r(z)=3 \bigrightarrow r(x)+r(y)+r(z)=6 \ne 7. Ein Gegenbeispiel reicht und es ist kein Endomorphismus.

Ist das ein ganz neues Konzept? Es wird ja offensichtlich in fast allen Druckerzeugnissen, die irgendwie Prozentwerte so angeben, für die Gesamtsumme „gemogelt“. Aber es stellt sich heraus, dass das auch hochoffiziell alle vier Jahre passiert. Wir haben irgendwelche Ereignisse, die sich „Wahlen“ nennen und da kann man Parteien oder Listen für ein Parlament eine Stimme geben. Das Parlament hat meistens eine vorgegebene Anzahl von Sitzen, wenn wir mal Spezialitäten wie 5%-Sperrklausel und Überhangmandate in der deutschen Wahlpraxis vergessen, um es noch halbwegs für Logik zugänglich zu halten. Man stelle sich nur vor, was passiert, wenn 40 Parteien antreten und je 2.5% erhalten, um zu sehen, dass das System nicht korrekt ist, im Sinne einer korrekten Software. Nun sollte man meinen, die Parlamentssitze werden einfach im Verhältnis der Stimmen aufgeteilt. Wenn man n Parlamentssitze hat, werden die Stimmenanteile in Prozent auf Vielfache von \frac{100}{n} gerundet und zwar so, dass es am Schluss aufgeht. Es gibt viele Verfahren, um das zu bewerkstelligen und je nachdem, welches Verfahren man auswählt, kann bei denselben Stimmenzahlen die Sitzverteilung geringfügig variieren. Habe ich das Wort „Mogeln“ oben erwähnt? Es muss wohl Zufall sein. Welches Verfahren gerade am gerechtesten ist, wechselt also von Jahr zu Jahr immer wieder ein bisschen.

Wenn wir nicht gerade eine Wahlauswertungssoftware schreiben, ist in den meisten Fällen diese Frage weniger aufgeladen. Es soll in einem Text eine Summe von mehreren gerundeten Werten eingehalten werden und die Rundung soll „einigermaßen vernünftig“ erfolgen. Der oberflächliche Leser wird zufrieden sein, der etwas kritischere auch, weil die Summe stimmt und der Leser, der sich richtig Gedanken macht wird es auch verstehen, dass man da mogeln musste und dass man das einigermaßen sinnvoll getan hat. Man beachte, dass diese Thematik einige Überraschungen birgt, z.B. das Alabama-Paradoxon und das Wählerzuwachsparadoxon.

Wie in Restklassenrundung beschrieben, gehen wir von Mengen M und N \subseteq M mit einer Metrik d: M\times M \rightarrow {\Bbb R_+}, (m, n) \mapsto d(m,n) \ge 0 aus und wollen Abbildungen r : M \rightarrow N betrachten, bei denen d(x, r(x)) klein bleibt und eventuell ein paar weitere Bedingungen erfüllt sein sollen. Da aber die Korrektur schon Teil der Abbildung sein soll, interessiert uns hier eigentlich eher so etwas wie eine Abbildung
s: M^n \rightarrow N^n, (m_1,\ldots,m_n) \mapsto (n_1,\ldots n_n) mit \sum_{i=1}^n m_i = \sum_{i=1}^n n_i und für alle i ist d(m_i,n_i) „klein“. Reine Auf- oder Abrundung kann also nicht die Lösung sein, da das nie aufgeht. Wir könnten die Fehlerquadrate minimieren, was den Vorteil hat, das große absolute Abweichungen sich stärker auswirken, so dass eine gleichmäßige Verteilung der Korrektur besser wegkommt, also z.B.
\sum_{i=1}^n (d(m_i, n_i))^2 ist minimal. Es lassen sich Beispiele konstruieren, wo das nicht eindeutig ist. In dem Fall kann man entweder eine Regel festlegen oder mit Zufallszahlen ermitteln welche der passenden Möglichkeiten zum Zuge kommt. Man kann auch versuchen, die relativen Fehler zu minimieren, also so etwas wie
\sum_{i=1: m_i \ne 0}^n (\frac{d(m_i,n_i)}{d(m_i,m_i)})^2, wobei man die Summanden mit m_i=0 weglassen muss, was nicht stört, wenn 0\in N ist, man also sowieso 0 auf 0 runden will.
Eine Alternative ist, sich einfach an den Sitzzuteilungsverfahren für Parlamente zu orientieren und deren Algorithmen sinngemäß für die hier beschriebene Aufgabe anzupassen:

Oft sind die Anforderungen an die „Qualität“ der Rundung niedriger als bei der Zuteilung von Parlamentssitzen, aber es lohnt sich schon, sich hierüber einige Gedanken zu machen statt einfach irgendwie mit einem naiven Ansatz zu runden.

Frage: Wie verhalten sich die oben aufgeführten Sitzzuteilungsverfahren zur Minimierung der absoluten und relativen Fehlerquadrate?

Bei genügendem Interesse kann ich einmal eine Implementierung für so eine Rundung hinzufügen.

Gelegentlich begegnen uns auch Probleme, die dem hier geschilderten sehr ähnlich sind oder die sich darauf zurückführen lassen. Wer hätte gedacht, dass die Zuteilung von Parlamentssitzen eigentlich eine Rundung ist?

Share Button

2015

Frohes neues Jahr!
Happy New Year
Gott nytt år!
Godt Nyttår!
¡Próspero año nuevo!
Bonne année!
FELIX SIT ANNUS NOVUS
Felice Anno Nuovo!
Весёлого нового года!
السنة الجديدة المبتهجة
Een gelukkig nieuwjaar!

Share Button

Weihnachten 2014

weihnachtsmarkt-berlin-20141214_192259Frohe Weihnachten!
Merry Christmas!
God Jul!
¡Feliz Navidad!
Joyeux Noël!
Natale hilare!
С Рождеством!
ميلاد مجيد
Buon Natale!
God Jul!
Prettige Kerstdagen!

Share Button

Restklassenrundung

English

Das Konzept der Rundung kennt man grundsätzlich. Aber versuchen wir es etwas systematischer zu erfassen.

Man hat eine Menge M von Zahlen und eine Teilmenge N \subseteq M davon, deren Elemente in der verwendeten Programmierumgebung dargestellt werden. Dazu hat man noch eine Metrik d : M \times M \rightarrow \Bbb R_+, (x, y) \mapsto r=d(x,y)>=0. Man verlangt normalerweise noch gewisse Eigenschaften von d:

  • Positive Definitheit: d(x,y) = 0 \iff x = y
  • Symmetrie: d(x,y)=d(y,x)
  • Dreiecksungleichung: d(x,z) \le d(x,y) + d(y,z)

Typischerweise sind die Zahlen, mit denen wir uns meistens beschäftigen, in der Welt der reellen und komplexen Zahlen gedacht, man kann also fast immer sicher sein, dass M \subseteq \Bbb C ist, meistens sogar M \subseteq \Bbb R oder wenn wir ehrlich sind sogar M \subseteq \Bbb Q. Dann ist normalerweise d(x,y) = |x-y|. Wer die komplexen Zahlen noch nicht kennt, denke einfach an reelle und rationale Zahlen, das ist das, womit wir normalerweise bewusst zu tun haben. Dabei sind natürlich Konzepte wie Rundung speziell in p-adischen Zahlen hochinteressant, aber dafür muss ich die erstmal erklären und das lasse ich heute…

Was stellen wir uns nun unter einer Rundung vor?
Vielleicht eine Abbildung
r: M \rightarrow N, x \mapsto r(x),
die mit gewissen Nebenbedingungen für jedes x jeweils so gewählt wird, dass d(x, r(x)) minimal ist.
Die Nebenbedingungen brauchen wir einerseits, um es eindeutig zu machen, wenn mehrere Werte y\in N existieren, für die d(x,y) minimal ist. Der klassische Fall ist das Runden auf ganzzahlige Werte und die Frage mit der 0.5. Wenn N eine Teilmenge der reellen Zahlen ist, was ja „meistens“ der Fall ist, hat man eine Anordung. Da kommen dann die folgenden Constraints zum Tragen (Beispiel immer mit Rundung auf ganze Zahlen):

ROUND_UP
|r(x)|\ge |x| Z.B. r(0.4)=1 und r(0.5)=1 und r(-0.5)=-1
ROUND_DOWN
|r(x)|\le |x| Z.B. r(0.6)=0 und r(0.5)=0 und r(-0.5)=0
ROUND_CEILING
r(x) \ge x Z.B. r(0.4)=1 und r(0.5)=1 und r(-0.5)=0
ROUND_FLOOR
r(x) \le x Z.B. r(0.6)=0 und r(0.5)=0 und r(-0.5)=-1
ROUND_HALF_UP
Minimiere d(r(x),x), aber wenn es mehrere optimale Werte für r(x) gibt, wähle den am weitesten von 0 entfernten, z.B. r(0.4)=0 und r(0.6)=1 und r(0.5)=1 und r(-0.5)=-1
ROUND_HALF_DOWN
Minimiere d(r(x),x), aber wenn es mehrere optimale Werte für r(x) gibt, wähle den am nächsten an 0, z.B. r(0.4)=0 und r(0.6)=1 und r(0.5)=0 und r(-0.5)=0
ROUND_HALF_CEILING
Minimiere d(r(x),x), aber wenn es mehrere optimale Werte für r(x) gibt, wähle den größten, z.B. r(0.4)=0 und r(0.6)=1 und r(0.5)=1 und r(-0.5)=0
ROUND_HALF_FLOOR
Minimiere d(r(x),x), aber wenn es mehrere optimale Werte für r(x) gibt, wähle den kleinesten, z.B. r(0.4)=0 und r(0.6)=1 und r(0.5)=0 und r(-0.5)=-1
ROUND_HALF_EVEN
Minimiere d(r(x),x), aber wenn es mehrere optimale Werte für r(x) gibt, wähle den mit gerader Endziffer. Achtung, dieser Constraint ist im „klassischen“ Fall anwendbar, aber nicht allgemeingültig. Z.B.: r(0.4)=0 und r(0.6)=1 und r(0.5)=0 und r(-0.5)=0 und (1.5)=2
ROUND_UNNECESSARY
Dieser Constraint ist im mathematischen Sinne nicht geeignet (oder nur mit hässlichen Verrenkungen), aber programmatisch können wir das: Wir nehmen r(x)=x und schmeißen eine Exception wenn nicht x\in N schon gilt.

Typischerweise denken wir im Dezimalsystem und dann wählen wir eine Zehnerpotenz 10^n mit n \in \Bbb N, also n \ge 0. Nun ist einfach
N = \{ x \in M : 10^n x \in \Bbb Z\},
also umgangsprachlich sind in N alle Zahlen aus M mit maximal n Stellen nach dem Komma. Diese Rundung funktioniert ganz gut mit so etwas wie LongDecimal in Ruby oder BigDecimal in Scala oder Java, wobei BigDecimal weniger Rundungsmodi anbietet als LongDecimal für Ruby.

Nun kommen wir zur Restklassenrundung. Wir gehen wieder von dieser Zehnerpotenz 10^n aus. Dann brauchen wir noch eine natürlich Zahl m \ge 2 und eine Menge von Resten R \subseteq \{0,...,m-1\}. Nun ist
N = \{ x \in M : 10^n x \in {\Bbb Z} \wedge \bigvee_{r \in R} 10^n x \equiv r \mod{m}\}.
Das bedeutet, wenn wir mit Nullen auf die angegebene Anzahl von Nachkommastellen auffüllen, das „Komma“ (normalerweise als „.“ geschrieben) weglassen und dann diese Zahl mit Rest durch m teilen, der dabei herauskommende Rest in R liegt.
In diesem Fall wird es mit dem ROUND_HALF_EVEN eventuell schwierig, da es undefiniert oder mehrdeutig werden kann. Aber wir müssen auch den Fall abdecken, dass die 0 nicht in R ist und Regeln angeben, wohin die 0 gerundet werden soll. Die Kandidaten sind hier mit selbsterklärenden Namen versehen:

  • ZERO_ROUND_TO_PLUS
  • ZERO_ROUND_TO_MINUS
  • ZERO_ROUND_TO_CLOSEST_PREFER_PLUS
  • ZERO_ROUND_TO_CLOSEST_PREFER_MINUS
  • ZERO_ROUND_UNNECESSARY

Ein wichtiger Anwendungsfall ist hier m=10 und R=\{0, 5\}. So kann man in der Schweiz Geldbeträge auf Vielfache von 5 Rappen (0.05 CHF) runden. Dies wurde in Rundung bei Geldbeträgen bereits genauer beschrieben.

Share Button

English or German / Englisch oder Deutsch

Currently I am writing blog articles in German and translate them to English, if I consider them interesting for a wider audience. I am considering to do it the other way round and write articles in English and provide a German translation of some of them. I am creating a poll for this.
Find the poll in the upper left corner of the Start page.

Zur Zeit schreibe ich alles auf Deutsch und übersetze Artikel auf Englisch, wenn sie von allgemeinerem Interesse sind. Ich überlege, es umgekehrt zu machen und die Artikel ab 1. Januar 2015 auf Englisch zu schreiben und bei Interesse einzelne auf Deutsch zu übersetzen. Ich starte eine Umfrage dazu.
Die Umfrage steht in der linken oberen Ecke der Startseite.

Share Button