Inhaltsverzeichnis
24.11.2016 Zusätzliche Erklärung
Zum Beispiel die folgende Szene:
Guthabenabhebung, Überweisung usw.
Heim Backend-Entwicklung PHP-Tutorial Warum behält das Finanzsystem nur zwei Dezimalstellen bei? Was ist, wenn es einen Betrag mit mehr als zwei Dezimalstellen gibt?

Warum behält das Finanzsystem nur zwei Dezimalstellen bei? Was ist, wenn es einen Betrag mit mehr als zwei Dezimalstellen gibt?

Dec 01, 2016 am 12:26 AM
java mysql oracle php 支付宝

Ich habe plötzlich ein Problem entdeckt. Das Finanzsystem in unserem Leben hat höchstens zwei Dezimalstellen, z. B. 12,37, was jedoch auch bei der Berechnung mit zwei Dezimalstellen und Nicht-Ganzzahlen der Fall ist mit drei Dezimalstellen, wie zum Beispiel bei Banken Der Tagessatz muss auf drei Dezimalstellen oder mehr berechnet werden, aber warum sehen wir den Saldo nicht auch mit zwei Dezimalstellen? Wie wird es weggelassen? Ich finde diese Frage interessant.

Meine Vermutung:

Solange unser Finanzsystem nur zwei Dezimalstellen verwendet, werden bei der Generierung von mehr als zwei Dezimalstellen die folgenden Dezimalstellen nicht direkt verwendet, anstatt eine nach fünf hinzuzufügen Wenn es hinzugefügt wird, führt dies zu zusätzlichem Geld für den Benutzer. Selbst wenn es zusätzliche 0,001 Yuan sind, ist der Verlust im gesamten System enorm. Wenn es also mehr als zwei Dezimalstellen gibt, können Sie das nur direkt weglassen Nach Dezimalstellen müssen Sie 0,009 weglassen, auch wenn es 0,239 ist. Dieser Verlust von 0,009 Yuan kann nur vom Benutzer getragen werden.

Zum Beispiel haben Banksysteme, Alipay, alle zwei Dezimalstellen für das Saldofeld, wobei ich plötzlich an dieses Problem dachte, und ich bin so verwirrt. Ich weiß nicht, ob ich es bin. decimal(10,2)

Wenn Alipay beispielsweise Punkte und Einkaufsgutscheine verwendet, um mehrere Bestellungen gleichzeitig abzuziehen, scheint das Abzugsgeld entsprechend dem Anteil des Bestellbetrags auf jede Bestellung aufgeteilt zu werden, sodass eine Dezimalstelle angezeigt wird, diese Dezimalstelle jedoch vorhanden ist Es sind auch zwei Personen. Ich habe nicht genau aufgepasst und weiß nicht, ob sich die Abzüge bei Mehrfachbestellungen zu dem Betrag addieren, der bei der Bestellung abgezogen wurde.

Wenn ich das denke, habe ich dann das Gefühl, dass wir die meiste Zeit viel Geld verloren haben müssen? Ich wollte dieses Problem ursprünglich lösen, indem ich ein paar Dezimalstellen mehr beibehielt, aber ich habe das Gefühl, dass es unendlich viele Dezimalstellen geben kann, was immer noch unwahrscheinlich ist. Wird es dem Benutzer nur einen kleinen Geldverlust bescheren.

Ich hoffe, jemand kann mir eine Anleitung geben. Ich bin so verwirrt, dass ich derzeit bei meinem Projekt auf ein solches Problem stoße.

Vielen Dank!

Antwortinhalt:

Ich habe plötzlich ein Problem entdeckt. Das Finanzsystem in unserem Leben hat höchstens zwei Dezimalstellen, z. B. 12,37, was jedoch auch bei der Berechnung mit zwei Dezimalstellen und Nicht-Ganzzahlen der Fall ist mit drei Dezimalstellen, wie zum Beispiel bei Banken Der Tagessatz muss auf drei Dezimalstellen oder mehr berechnet werden, aber warum sehen wir den Saldo nicht auch mit zwei Dezimalstellen? Wie wird es weggelassen? Ich finde diese Frage interessant.

Meine Vermutung:

Solange unser Finanzsystem nur zwei Dezimalstellen verwendet, werden bei der Generierung von mehr als zwei Dezimalstellen die folgenden Dezimalstellen nicht direkt verwendet, anstatt eine nach fünf hinzuzufügen Wenn es hinzugefügt wird, führt dies zu zusätzlichem Geld für den Benutzer. Selbst wenn es zusätzliche 0,001 Yuan sind, ist der Verlust im gesamten System enorm. Wenn es also mehr als zwei Dezimalstellen gibt, können Sie das nur direkt weglassen Nach Dezimalstellen müssen Sie 0,009 weglassen, auch wenn es 0,239 ist. Dieser Verlust von 0,009 Yuan kann nur vom Benutzer getragen werden.

Zum Beispiel haben Banksysteme, Alipay, alle zwei Dezimalstellen für das Saldofeld, wobei ich plötzlich an dieses Problem dachte, und ich bin so verwirrt. Ich weiß nicht, ob ich es bin.

decimal(10,2)Wenn Alipay beispielsweise Punkte und Einkaufsgutscheine verwendet, um mehrere Bestellungen gleichzeitig abzuziehen, scheint das Abzugsgeld entsprechend dem Anteil des Bestellbetrags auf jede Bestellung aufgeteilt zu werden, sodass eine Dezimalstelle angezeigt wird, diese Dezimalstelle jedoch vorhanden ist Es sind auch zwei Personen. Ich habe nicht genau aufgepasst und weiß nicht, ob sich die Abzüge bei Mehrfachbestellungen zu dem Betrag addieren, der bei der Bestellung abgezogen wurde.

Wenn ich das denke, habe ich dann das Gefühl, dass wir die meiste Zeit viel Geld verloren haben müssen? Ich wollte dieses Problem ursprünglich lösen, indem ich ein paar Dezimalstellen mehr beibehielt, aber ich habe das Gefühl, dass es unendlich viele Dezimalstellen geben kann, was immer noch unwahrscheinlich ist. Wird es dem Benutzer nur einen kleinen Geldverlust bescheren.

Ich hoffe, jemand kann mir eine Anleitung geben. Ich bin so verwirrt, dass ich derzeit bei meinem Projekt auf ein solches Problem stoße.

Vielen Dank!

Es gibt eine

Bankmethode zum Runden

, nämlich: Wenn der Wert der Rundungsziffer kleiner als 5 ist, wird er direkt verworfen.

Wenn der Wert der Rundungsziffer größer oder gleich 6 ist, wird er gerundet und verworfen Wenn die Rundungsziffer gleich 5 ist, gibt es zwei Arten von Situationen: Wenn nach 5 andere Zahlen (nicht 0) stehen, werden diese gerundet und verworfen, wenn nach 5 eine 0 steht (d. h. 5 ist die letzte Ziffer). ), dann wird anhand der Parität der Ziffer vor 5 beurteilt, ob ein Übertrag erforderlich ist. Ungerade Zahlen Übertragen, gerade Zahlen verwerfen.


Als Beispiel basierend auf den oben genannten Regeln nehmen wir an, dass Zahlen auf einzelne Ziffern genau sein müssen:

<code>49.6101 -> 50
49.499 -> 49
49.50921 -> 50
48.50921 -> 48
48.5101 -> 49</code>
Nach dem Login kopieren

Hier ist ein gutes Beispiel, um die Vorteile dieser Berechnungsmethode zu sehen:

2,55 + 3,45 = 6

Wenn wir eine Dezimalstelle beibehalten und 2,55 und 3,45 umrechnen wollen, sieht das so aus:

2,6 + 3,5 = 6,1

Natürlich handelt es sich hier um 0,1 mehr, sodass 2,55 laut unserer Berechnung „Auf fünf aufrunden, um das Doppelte zu verdoppeln“ tatsächlich 2,5 sein kann50, nach der 5 wollen wir If abrunden Es ist 0, dann beurteilen Sie anhand der Parität der vorherigen Ziffer, ob die vorherige Ziffer eine ungerade Zahl ist, dann ist sie nach dem Übertrag 2,65 Die vorherige 5 ist eine gerade Zahl, dann wird sie verworfen und das Ergebnis ist 3,4, also werden beide wie folgt berechnet:

2,6 + 3,4 = 6

24.11.2016 Zusätzliche Erklärung

Jemand hat 2,55 + 2,55 vorgeschlagen, was immer noch eine Überzählung von 0,1 ist, aber warum habe ich dieses Beispiel nicht angegeben? Da zum Runden von verwendet wird, wird diese Situation auch auftreten. Der entscheidende Punkt ist 2,45 + 2,45. Wir müssen diese Situation vermeiden, in der wir ohne Übertrag nahe am Mittelwert liegen, denn nur so kann 近似计算中舍去和进位的概率相等 garantiert werden. Dies ist der Hauptzweck. Denn solange die Genauigkeit begrenzt ist, müssen wir nur sicherstellen, dass die Wahrscheinlichkeiten bei einer großen Anzahl von Stichproben gleich sind.

Bei der Finanzierungsfrage in diesem Bereich müssen noch die geschäftlichen Bedürfnisse berücksichtigt werden. Nach meiner bisherigen Praxis habe ich mir 4 Nachkommastellen eingespart. Treffen Sie eine Wahl basierend auf verschiedenen Szenarien! Alle an der Rezeption angezeigten Beträge sind jedoch nur zweistellig und rufen Sie die Ziffern nach unten ab

Zum Beispiel die folgende Szene:

Guthabenabhebung, Überweisung usw.


ist normalerweise 向下取数, zum Beispiel ist der tatsächliche Bargeldbetrag, der abgehoben werden kann, 10.1234. 10.12

Ratenzahlungsbezogen


Wenn das Gesamtlimit der Bank beispielsweise 1.000 Yuan beträgt und Sie einfach etwas kaufen und alles ausgeben, können Sie Ratenzahlungen beantragen. Aufgeteilt in 3 Raten ist

; nach dem Runden wird daraus
; Das ist eine Falle1000/3=333.3333333 333.33Die allgemeine Praxis ist: 999.99Die ersten beiden Perioden werden durch Rundung berechnet. Die letzte Ausgabe, berechnet durch Subtraktion:

;

Weitere Anweisungen
1000-333.33-333.33=333.34Je nach Unternehmen sind die Anzahl der reservierten Ziffern und die Kompromisse unterschiedlich. Zum Beispiel der Nettowert des Fonds. Die Länge des Dezimalpunkts hat immer noch großen Einfluss auf die Höhe der Mittel. Je genauer dies ist, desto besser. Kommunizieren Sie mit dem Produkt über Ihre spezifischen Bedürfnisse!

Das ist eigentlich nicht der Fall. Wenn unser E-Commerce-Finanzsystem den Abgleich und die Provisionsberechnung durchführt, erreicht alles die letzten sechs Ziffern. decimal(16, 6) wird erst nach der Berechnung gerundet. Im Allgemeinen ist der letzte Rundungsschritt in der Vereinbarung festgelegt. Ich denke, dass der letzte Schritt in den Verhandlungsbereich fallen sollte. Es hat nichts mehr mit dem System zu tun.

Ich verstehe keine sehr professionellen Dinge, aber ich denke, dass es beim Aufbau eines Systems nichts zu beachten gibt. Alle Benutzer nach zwei Dezimalstellen verlieren Geld.

Wenn der Betrag 0,111 beträgt, wird er als 0,11 erfasst

Bei einem Betrag von 0,111 werden nur 0,11 ausgezahlt


Natürlich wird es keine zwei Ziffern sein, sowohl die Berechnung als auch die Speicherung sind 6 Ziffern und mehr (es ist nicht klar, ob es mehr sind, aber mindestens 6 Ziffern sind sicher)
Es ist nur die endgültige Bewertung Der Benutzer kann es sich später nicht auszahlen lassen, daher wird das Endergebnis nach einem bestimmten Algorithmus berechnet.

Die Ganzzahl 1 im Computer ist nicht gleich der Dezimalzahl 1,0, daher wird die Dezimalzahl in Geld zur Verarbeitung in eine Ganzzahl umgewandelt

Ich denke, es ist sicherer, Punkte als Maßeinheit für das in der Datenbank gespeicherte Betragsfeld zu verwenden. Wenn Sie es also an der Rezeption anzeigen, runden Sie es zuerst auf und dividieren Sie es dann durch 100, um das zu erhalten Yuan.

Die Berechnungsmethode verwendet „Geben“ und „Empfangen“, um die Punktzahl zu berechnen 1,1 Cent können weggeworfen werden und es werden nur 2 Yuan ausgegeben, das heißt, es wird nur der ganzzahlige Teil genommen.

„Sammeln“: Im Einklang mit dem Designprinzip, niemals zu leiden ein Verlust, 1 Cent wird auch als 1 Punkt gezählt. Dann wird anhand des Feldwerts beurteilt, ob ein Dezimalpunkt vorhanden ist. Wenn nicht, wird dieser einfach addiert. Wenn es auf Rundung basiert ... Alle Experten müssen die Werte mit Dezimalstellen beurteilen und damit umgehen. Der Grundsatz, niemals Geld zu verlieren, sollte auch für Finanzinstitute ein allgemeiner Grundsatz sein.

Wenn Sie die Maßeinheit für einen Betrag verwenden und der Betrag Hunderte Millionen beträgt, müssen Sie das Maximum des Datentyps berücksichtigen und den Bereich nicht überschreiten.



Der Fragesteller hat tatsächlich die geheimen Methoden enthüllt, mit denen Finanzinstitute Geld sammeln, hahaha.

收款时直接把分以后的数字进位处理,付款时直接截去分以后的小数位。

展示显示2位小数不代表系统中处理都是2位小数吧。我觉得应该会有很多位

要么四舍五入,要么向下取整,保留两位

合理的均分方法可以固定小数位.
比如100元平均分成N份(保留2为小数)并计算尾差:

<code><?php
header('Content-Type: text/plain; charset=utf-8');
function tail($num, $fen) {
    $avg  = bcdiv($num, $fen, 2); //除
    $tail = bcsub($num, $avg*($fen-1), 2); //减
    echo $num.'='.str_repeat($avg.'+', $fen-1).$tail."\n";
    echo "$num=$avg*($fen-1)+$tail\n";
    return array($avg, $tail);
}
var_export(tail(100, 3));
var_export(tail(100, 6));
//输出:
100=33.33+33.33+33.34
100=33.33*(3-1)+33.34
array (
  0 => '33.33',
  1 => '33.34',
)
100=16.66+16.66+16.66+16.66+16.66+16.70
100=16.66*(6-1)+16.70
array (
  0 => '16.66',
  1 => '16.70',
)</code>
Nach dem Login kopieren

4舍5入,没有什么好纠结的,相信老祖宗的智慧。

从统计学的角度上来看,在大规模的应用的情况下,你们金融系统多出来的和少掉的钱是近似的,同样的,用户多出来和少掉的钱也是近似的,没有必要纠结。

没有做过金融系统开发,权当抛砖引玉了。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man verstümmelte Code in Oracle löst Wie man verstümmelte Code in Oracle löst Apr 11, 2025 pm 10:09 PM

Oracle -verstümmelte Probleme können gelöst werden, indem der Datenbankzeichen gesetzt wird, um sicherzustellen, dass sie mit den Daten übereinstimmen. Legen Sie den Client -Zeichen für die Datenbank fest. Konvertieren Sie Daten oder ändern Sie Spaltenzeichen -Sets so, dass sie Datenbankzeichen -Sets übereinstimmen. Verwenden Sie Unicode -Zeichensätze und vermeiden Sie Multibyte -Zeichensätze. Überprüfen Sie, ob die Spracheinstellungen der Datenbank und des Clients korrekt sind.

Die PHP -Community: Ressourcen, Unterstützung und Entwicklung Die PHP -Community: Ressourcen, Unterstützung und Entwicklung Apr 12, 2025 am 12:04 AM

Die PHP -Community bietet umfangreiche Ressourcen und Unterstützung, um Entwicklern zu helfen, zu wachsen. 1) Zu den Ressourcen gehören offizielle Dokumentation, Tutorials, Blogs und Open -Source -Projekte wie Laravel und Symfony. 2) Die Unterstützung kann durch Stackoverflow-, Reddit- und Slack -Kanäle erhalten werden. 3) Entwicklungstrends können durch Befolgung von RFC gelernt werden. 4) Die Integration in die Community kann durch aktive Teilnahme, Beitrag zum Code und Lernfreigabe erreicht werden.

Wie man die Oracle -Installation deinstalliert Wie man die Oracle -Installation deinstalliert Apr 11, 2025 pm 08:24 PM

Deinstallieren Sie die Methode für Oracle -Installationsfehler: Schließen Sie den Oracle -Service, löschen Sie Oracle -Programmdateien und Registrierungsschlüssel, Deinstallieren Sie Oracle -Umgebungsvariablen und starten Sie den Computer neu. Wenn das Deinstall fehlschlägt, können Sie das Oracle Universal Deinstall -Tool manuell deinstallieren.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So verschlüsseln Sie die Oracle -Ansicht So verschlüsseln Sie die Oracle -Ansicht Apr 11, 2025 pm 08:30 PM

Mit der Verschlüsselung von Oracle View können Sie Daten in der Ansicht verschlüsseln und so die Sicherheit sensibler Informationen verbessern. Die Schritte umfassen: 1) Erstellen des Master -Verschlüsselungsschlüssels (MEK); 2) Erstellen einer verschlüsselten Ansicht, der Ansicht und der Verschlüsselung der Ansicht und der MEK angeben; 3) Benutzern Sie die Benutzer, auf die verschlüsselte Ansicht zuzugreifen. Wie verschlüsselte Ansichten funktionieren: Wenn ein Benutzer nach einer verschlüsselten Ansicht nachgefragt wird, verwendet Oracle MEK, um Daten zu entschlüsseln und sicherzustellen, dass nur autorisierte Benutzer auf lesbare Daten zugreifen können.

Was tun, wenn das Orakel nicht geöffnet werden kann Was tun, wenn das Orakel nicht geöffnet werden kann Apr 11, 2025 pm 10:06 PM

Lösungen für Oracle können nicht geöffnet werden, einschließlich: 1. Starten Sie den Datenbankdienst; 2. Starten Sie den Zuhörer; 3.. Hafenkonflikte prüfen; 4. Umgebungsvariablen korrekt einstellen; 5. Stellen Sie sicher, dass die Firewall- oder Antivirus -Software die Verbindung nicht blockiert. 6. Überprüfen Sie, ob der Server geschlossen ist. 7. Verwenden Sie RMAN, um korrupte Dateien wiederherzustellen. 8. Überprüfen Sie, ob der TNS -Dienstname korrekt ist. 9. Netzwerkverbindung prüfen; 10. Oracle Software neu installieren.

Jenseits des Hype: Beurteilung der Rolle von PHP heute heute Jenseits des Hype: Beurteilung der Rolle von PHP heute heute Apr 12, 2025 am 12:17 AM

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

So lesen Sie den Oracle AWR -Bericht So lesen Sie den Oracle AWR -Bericht Apr 11, 2025 pm 09:45 PM

Ein AWR -Bericht ist ein Bericht, in dem die Datenbankleistung und Aktivitätsschnappschüsse angezeigt werden. Zu den Interpretationsschritten gehören: Identifizierung des Datums und der Uhrzeit des Aktivitäts -Snapshots. Sehen Sie sich einen Überblick über Aktivitäten und Ressourcenverbrauch an. Analysieren Sie Sitzungsaktivitäten, um Sitzungsarten, Ressourcenverbrauch und Warteeignisse zu finden. Finden Sie potenzielle Leistungsengpässe wie langsame SQL -Aussagen, Ressourcenbeständigkeit und I/A -Probleme. Wartenereignisse anzeigen, identifizieren und beheben Sie sie für die Leistung. Analysieren Sie die Muster für Latch- und Speichernutzung, um Speicherprobleme zu identifizieren, die Leistungsprobleme verursachen.

See all articles