Wie formatiert man negative Währungsbeträge mit Klammern für die Buchhaltung?

Verwenden Sie die Option currencySign, um negative Währungswerte in Buchhaltungsnotation anzuzeigen

Einführung

Finanzberichte, Buchhaltungsberichte und Bilanzen zeigen negative Währungsbeträge in Klammern statt mit Minuszeichen an. Ein Verlust von fünfhundert Dollar erscheint als ($500.00) anstelle von -$500.00. Diese Konvention macht negative Beträge visuell deutlicher, reduziert das Risiko, Verluste zu übersehen, und folgt etablierten Buchhaltungsstandards.

Die Intl.NumberFormat-API von JavaScript bietet die Option currencySign, um negative Währungsbeträge in dieser Buchhaltungsnotation zu formatieren. Wenn Sie currencySign auf "accounting" setzen, werden negative Werte automatisch gemäß den Locale-Konventionen in Klammern angezeigt.

Warum die Buchhaltungsnotation Klammern verwendet

Die Praxis, negative Beträge in Klammern zu setzen, entstand bevor Computer in der Buchhaltung üblich wurden. Ein auf Papier gedrucktes Minuszeichen konnte klein, schwach oder beim Scannen von Zahlenspalten leicht übersehen werden. Klammern schaffen eine klare visuelle Begrenzung um negative Werte und machen sie sofort erkennbar.

Klammern verhindern auch Verwechslungen mit Bindestrichen oder Gedankenstrichen, die in anderen Kontexten erscheinen. In dichten Finanztabellen mit vielen Zeilen und Spalten stechen Klammern stärker hervor als ein einzelnes Minuszeichen. Diese visuelle Unterscheidung hilft, Fehler beim Lesen, Übertragen oder Analysieren von Finanzdaten zu vermeiden.

Die Konvention wurde zur Standardpraxis in der Buchhaltung und wird heute noch weitgehend verwendet. Die meiste Buchhaltungssoftware, Finanzberichte und Bilanzen zeigen negative Beträge in Klammern an. Benutzer, die mit Finanzdokumenten vertraut sind, erwarten dieses Format und finden es leichter lesbar als Minuszeichen.

Verwendung des currencySign-Accounting-Formats

Übergeben Sie die Option currencySign mit dem Wert "accounting" beim Erstellen einer Intl.NumberFormat-Instanz für die Währungsformatierung. Dies weist den Formatter an, die Buchhaltungsnotation für negative Beträge zu verwenden.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

console.log(formatter.format(-1234.56));
// Output: "($1,234.56)"

console.log(formatter.format(1234.56));
// Output: "$1,234.56"

Der negative Betrag wird in Klammern ohne Minuszeichen angezeigt. Positive Beträge werden normal ohne Klammern angezeigt. Der Formatter wendet die entsprechende Buchhaltungsnotation automatisch an, je nachdem, ob der Wert positiv oder negativ ist.

Die Option currencySign betrifft nur die Währungsformatierung. Sie müssen style: 'currency' festlegen und einen currency-Code angeben, damit die Option wirksam wird.

Vergleich von Standard- und Accounting-Formaten

Das Standard-Währungsformat verwendet ein Minuszeichen für negative Werte. Dieses Standardformat eignet sich gut für allgemeine Zwecke, während das Accounting-Format den Konventionen der Finanzberichterstattung folgt.

const standard = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'standard'
});

const accounting = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

console.log(standard.format(-500));
// Output: "-$500.00"

console.log(accounting.format(-500));
// Output: "($500.00)"

Das Standardformat setzt ein Minuszeichen vor das Währungssymbol. Das Accounting-Format umschließt den gesamten Betrag einschließlich des Währungssymbols mit Klammern. Beide Formate erzeugen für positive Werte die gleiche Ausgabe.

Wenn Sie die Option currencySign weglassen, verwendet der Formatter standardmäßig das Verhalten "standard".

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD'
});

console.log(formatter.format(-500));
// Output: "-$500.00"

Wie die Buchhaltungsnotation je nach Locale variiert

Verschiedene Locales platzieren das Währungssymbol und die Klammern gemäß lokaler Konventionen an unterschiedlichen Positionen. Die Intl.NumberFormat-API behandelt diese Variationen automatisch.

const currencies = [
  { locale: 'en-US', currency: 'USD' },
  { locale: 'de-DE', currency: 'EUR' },
  { locale: 'fr-FR', currency: 'EUR' },
  { locale: 'ja-JP', currency: 'JPY' }
];

currencies.forEach(({ locale, currency }) => {
  const formatter = new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: currency,
    currencySign: 'accounting'
  });

  console.log(`${locale}: ${formatter.format(-1234.56)}`);
});

// Output:
// en-US: ($1,234.56)
// de-DE: (-1.234,56 €)
// fr-FR: (1 234,56 €)
// ja-JP: (¥-1,235)

Jede Locale formatiert den negativen Betrag gemäß ihren Konventionen für die Platzierung des Währungssymbols, Dezimaltrennzeichen, Tausendertrennzeichen und die Verwendung von Klammern. Sie müssen diese Konventionen nicht kennen oder manuell implementieren. Die API wendet das korrekte Format basierend auf der Locale-Kennung an.

Einige Gebietsschemata platzieren das Minuszeichen innerhalb der Klammern in der Nähe der Zahl. Andere platzieren es in der Nähe des Währungssymbols. Der Formatierer behandelt diese Details basierend auf gebietsschemaspezifischen Regeln.

Kombination von Buchhaltungsnotation mit Vorzeichenanzeigeoptionen

Die Option currencySign funktioniert zusammen mit der Option signDisplay, um zu steuern, wie Vorzeichen in der Währungsformatierung angezeigt werden. Diese Kombination gibt Ihnen eine präzise Kontrolle über die Anzeige positiver und negativer Beträge.

const always = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'always'
});

console.log(always.format(500));
// Output: "+$500.00"

console.log(always.format(-500));
// Output: "($500.00)"

Mit signDisplay: 'always' werden positive Beträge mit einem Pluszeichen angezeigt, während negative Beträge weiterhin Klammern verwenden. Dies macht sowohl Gewinne als auch Verluste explizit.

const never = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'never'
});

console.log(never.format(500));
// Output: "$500.00"

console.log(never.format(-500));
// Output: "$500.00"

Mit signDisplay: 'never' werden sowohl positive als auch negative Beträge identisch ohne Vorzeichen oder Klammern angezeigt. Dies zeigt nur die Größenordnung, unabhängig davon, ob der Wert positiv oder negativ ist.

const exceptZero = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'exceptZero'
});

console.log(exceptZero.format(500));
// Output: "+$500.00"

console.log(exceptZero.format(-500));
// Output: "($500.00)"

console.log(exceptZero.format(0));
// Output: "$0.00"

Mit signDisplay: 'exceptZero' zeigen positive Beträge ein Pluszeichen, negative Beträge verwenden Klammern und Null wird ohne Vorzeichen angezeigt. Dieses Format eignet sich gut für Gewinn- und Verlustrechnungen, bei denen Sie Änderungen hervorheben möchten, während Null neutral bleibt.

Wann Buchhaltungsformat verwendet werden sollte

Verwenden Sie das Buchhaltungsformat, wenn Sie Finanzdaten in Kontexten anzeigen, in denen Benutzer Buchhaltungskonventionen erwarten. Dies umfasst Finanzberichte, Bilanzen, Gewinn- und Verlustrechnungen, Erfolgsrechnungen und Benutzeroberflächen von Buchhaltungssoftware.

Das Buchhaltungsformat macht negative Beträge prominenter als das Standardformat. Die Klammern schaffen eine visuelle Begrenzung, die die Aufmerksamkeit auf Verluste, Schulden oder negative Salden lenkt. Dies hilft Benutzern, Problembereiche beim Scannen von Finanzdaten schnell zu identifizieren.

const accountingFormatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

const accounts = [
  { name: 'Cash', balance: 15000 },
  { name: 'Accounts Receivable', balance: -3500 },
  { name: 'Inventory', balance: 12000 },
  { name: 'Accounts Payable', balance: -8000 }
];

accounts.forEach(account => {
  const formatted = accountingFormatter.format(account.balance);
  console.log(`${account.name}: ${formatted}`);
});

// Output:
// Cash: $15,000.00
// Accounts Receivable: ($3,500.00)
// Inventory: $12,000.00
// Accounts Payable: ($8,000.00)

Die Klammern lassen die negativen Salden hervorstechen und helfen Benutzern, Konten mit negativen Werten auf einen Blick zu identifizieren.

Verwenden Sie das Standardformat für allgemeinen E-Commerce, verbraucherorientierte Benutzeroberflächen oder Kontexte, in denen keine Buchhaltungskonventionen gelten. Die meisten Benutzer außerhalb von Buchhaltung und Finanzwesen sind mit der Klammerschreibweise weniger vertraut und erwarten Minuszeichen für negative Beträge.

const standardFormatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD'
});

// For a shopping cart or refund:
console.log(standardFormatter.format(-25.50));
// Output: "-$25.50"

Wählen Sie das Buchhaltungsformat, wenn Ihre Zielgruppe Konventionen der Finanzberichterstattung erwartet. Wählen Sie das Standardformat, wenn Ihre Zielgruppe verbraucherorientierte Darstellungen erwartet. Passen Sie das Format an die Erwartungen Ihrer Benutzer und den Kontext an, in dem die Zahlen erscheinen.

Browser-Unterstützung für Buchhaltungsformat

Die Option currencySign: "accounting" wird in allen modernen Browsern unterstützt. Chrome, Edge, Firefox, Safari und deren mobile Varianten unterstützen diese Funktion in Versionen, die seit 2019 veröffentlicht wurden.

Wenn Sie ältere Browser unterstützen müssen, testen Sie die Funktion und stellen Sie einen Fallback bereit.

function formatCurrency(amount) {
  try {
    const formatter = new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      currencySign: 'accounting'
    });
    return formatter.format(amount);
  } catch (error) {
    // Fallback for browsers without accounting support
    const formatter = new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD'
    });
    return formatter.format(amount);
  }
}

Dieser Fallback gibt das Standard-Währungsformat zurück, wenn das Buchhaltungsformat nicht verfügbar ist. In der Praxis ist die Unterstützung für das Buchhaltungsformat weit genug verbreitet, dass dieser Fallback für Anwendungen, die nur moderne Browser unterstützen, selten notwendig ist.