29.07.2022
0.30000000000000004.com
Die Tücken der Fließkomma-Mathematik
Autor: Bernhard Lauer
0.30000000000000004.com
Ihre Sprache ist nicht kaputt, sie macht Fließkomma-Mathematik. Da Computer von Haus aus nur ganze Zahlen speichern können, brauchen sie eine Möglichkeit, Dezimalzahlen darzustellen. Diese Darstellung ist allerdings nicht ganz exakt.
Besonders tückisch ist diese Rechenschwäche moderner Computer, wenn man als Entwickler eine Abfrage auf Gleichheit vornimmt, also etwa so:
Code-Beispiel
Wen der Computer allerdings die ganz einfache Rechnung 0.1 + 0.2 durchführt, kommt dabei nicht in jedem Fall 0.3 heraus, sondern beispielsweise 0.30000000000000004. Für obigen Pseudo-Code bedeutet das, dass er x als ungleich 0.3 ansieht und die Anweisung etwas ganz besonderes zu machen nicht ausführt.
Wer sich dafür interessiert, warum das so ist und was man dagegen unternehmen kann, sollte diesen Beitrag auf 0.30000000000000004.com lesen. Für knapp 70 Programmiersprachen wird dort auch gezeigt, welche Ergebnisse die Addition von 0.1 und 0.2 liefert, darunter findet man auch Ergebnisse, die kleiner sind als 0.3.
In CSharp und anderen .NET-Sprachen kann man mit dem Datentyp Decimal vorbeugen. Dieser liefert 28-29 Stellen Genauigkeit, hat aber auch zwei Nachteile: Zum einen einen deutlich kleineren Geltungsbereich und zum anderen den großen Speicherbedarf (16 Byte) jeder einzelnen Zahl (zum Vergleich: Float kommt mit 4 und Double mit 8 Byte aus).
Künstliche Intelligenz
Memary - Langzeitgedächtnis für autonome Agenten
Das Hauptziel ist es, autonomen Agenten die Möglichkeit zu geben, ihr Wissen über einen längeren Zeitraum hinweg zu speichern und abzurufen.
>>
Cloud Infrastructure
Oracle mit neuen KI-Funktionen für Sales, Marketing und Kundenservice
Neue KI-Funktionen in Oracle Cloud CX sollen Marketingspezialisten, Verkäufern und Servicemitarbeitern helfen, die Kundenzufriedenheit zu verbessern, die Produktivität zu steigern und die Geschäftszyklen zu beschleunigen.
>>
Reactive mit Signals
Neuer Vorschlag für Signals in JavaScript
Das für die Standardisierung von JavaScript verantwortliche Komitee macht einen Vorschlag für die Einführung von Signalen in die Programmiersprache. Signals sollen reaktives Programmieren in JavaScript einfacher machen.
>>
Künstliche Intelligenz
Microsofts Semantic Kernel eine Million Mal heruntergeladen
Der Microsoft Semantic Kernel stellt eine Verbindung zwischen Code und KI her und scheint ein voller Erfolg. Die Entwicklergemeinde hat die damit verbundenen Möglichkeiten akzeptiert.
>>