<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://de.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Korrektes_Handling_von_Geldbetr%C3%A4gen_%28JSON-RPC%29</id>
	<title>Korrektes Handling von Geldbeträgen (JSON-RPC) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://de.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Korrektes_Handling_von_Geldbetr%C3%A4gen_%28JSON-RPC%29"/>
	<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Korrektes_Handling_von_Geldbetr%C3%A4gen_(JSON-RPC)&amp;action=history"/>
	<updated>2026-05-01T09:11:42Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Bitcoin Wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Korrektes_Handling_von_Geldbetr%C3%A4gen_(JSON-RPC)&amp;diff=827&amp;oldid=prev</id>
		<title>Rising: Die Seite wurde neu angelegt: „== Überblick == Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millione…“</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Korrektes_Handling_von_Geldbetr%C3%A4gen_(JSON-RPC)&amp;diff=827&amp;oldid=prev"/>
		<updated>2012-12-23T19:15:21Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== Überblick == Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millione…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Überblick ==&lt;br /&gt;
Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millionen Satoshis) verarbeitet wird. In der JSON-API werden Beträge hingehen als Gleitkommazahlen mit doppelter Präzision dargestellt, also 1 BTC als 1.00000000.&lt;br /&gt;
&lt;br /&gt;
Wenn du Software schreibst, die das JSON-RPC-Interface verwendet, musst du auf mögliche Gleitkommafehler achten. Du, oder die JSON-Library, die du verwendest, sollte die Beträge entweder zu einer Fixkommadarstellung (mit 8 Nachkommastellen) oder zu einer Ganzzahldarstellung konvertieren. In beiden Fällen muss gerundet werden.&lt;br /&gt;
&lt;br /&gt;
Falsches Handling kann zu problematischen Fehlern führen; wenn du z.B. Nachkommastellen abschneidest, anstatt zu runden, könnten 0.1 BTC als &lt;br /&gt;
&amp;quot;0.09999999 BTC&amp;quot; angezeigt werden (oder schlimmer, &amp;quot;0.09 BTC&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Der Original-Bitcoin-Client führt eine korrekte Rundung für alle Werte, die er über das RPC-Interface enthält, durch. Das heißt, dass wenn der Wert 0.1 durch deine JSON-RPC-Library zum Wert &amp;quot;0.099999999999&amp;quot; konvertiert wird, dass dieser Wert wieder zu den nächsten 0.00000001 Bitcoins gerundet und daher korrekt als 0.1 BTC behandelt wird.&lt;br /&gt;
&lt;br /&gt;
Der Rest der Seite enthält Beispielcode für verschiedene JSON-Libraries und Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
== BASH ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 function JSONtoAmount() {&lt;br /&gt;
     printf &amp;#039;%.8f&amp;#039; &amp;quot;$1&amp;quot; | tr -d &amp;#039;.&amp;#039;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C/C++ ==&lt;br /&gt;
C/C++ JSON-Libraries geben die JavaScript-Zahl als Typ &amp;quot;double&amp;quot; zurück. Um von einem &amp;quot;double&amp;quot; auf einen 64-Bit-Integer zu konvertieren, multipliziere mit 100.000.000 und runde auf die nächste ganze Zahl:&lt;br /&gt;
 int64_t JSONtoAmount(double value) {&lt;br /&gt;
     return (int64_t)(value * 1e8 + (value &amp;lt; 0.0 ? -.5 : .5));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Um auf einen JSON-Wert zu konvertieren, dividiere durch 100.000.000,0 und stelle sicher, dass deine JSON-Implementation &amp;quot;doubles&amp;quot; mit mindestens 8 Stellen nach dem Komma ausgibt:&lt;br /&gt;
  double forJSON = (double)amount / 1e8;&lt;br /&gt;
&lt;br /&gt;
== ECMAScript ==&lt;br /&gt;
&lt;br /&gt;
 function JSONtoAmount(value) {&lt;br /&gt;
     return Math.round(1e8 * value);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Perl ==&lt;br /&gt;
 sub JSONtoAmount {&lt;br /&gt;
     return sprintf &amp;#039;%.0f&amp;#039;, 1e8 * shift;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
 function JSONtoAmount($value) {&lt;br /&gt;
     return round($value * 1e8);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
 def JSONtoAmount(value):&lt;br /&gt;
     return long(round(value * 1e8))&lt;br /&gt;
 def AmountToJSON(amount):&lt;br /&gt;
     return float(amount / 1e8)&lt;br /&gt;
&lt;br /&gt;
== Common Lisp ==&lt;br /&gt;
  (defun json-to-amount (n)&lt;br /&gt;
    (coerce (round (* n 1e8)) &amp;#039;integer))&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorsicht&amp;#039;&amp;#039;&amp;#039;: Die CL-JSON-Library behandelt Zahlen standardmäßig als Gleitkommazahlen mit einfacher Präzision. Mit dem folgenden Codestück kannst du stattdessen Zahlen mit doppelter Präzision verwenden:&lt;br /&gt;
&lt;br /&gt;
   (set-custom-vars :real (lambda (n)&lt;br /&gt;
                             (json::parse-number (concatenate &amp;#039;string n &amp;quot;d0&amp;quot;))))&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel wurde aus dem [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 Englischen]] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Technisches]]&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;br /&gt;
&lt;br /&gt;
[[en:Proper_Money_Handling_(JSON-RPC)]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
</feed>