Hallo,
weiß jemand welchen Datentyp ich am besten für Währungen bei SQLite nehme?
Ich dachte da an NUMERIC, allerdings wird im Netz viel VARCHAR empfohlen.
Wie muss ich die Beträge speichern? 123.99 oder 123,99?
Und wie rechne ich in PB dann die Summe zusammen, OHNE das die Nachkommastellen flöten gehen bzw. falsch zusammengerechnet werden?
Danke!
Delle
Datentyp für Währung bei SQLite und anschließend rechnen
Datentyp für Währung bei SQLite und anschließend rechnen
PB 6.21 | Win 11
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Am besten einfach in Cents umrechnen und eine Ganzzahl verwenden.
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Datentyp für Währung bei SQLite und anschließend rechnen
+1RSBasic hat geschrieben:Am besten einfach in Cents umrechnen und eine Ganzzahl verwenden.
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Also VARCHAR als Datentyp funktioniert, ich lasse die Berechnung einfach auch gleich mittels DB und SUM() erledigen.
Jetzt muss ich eben nur noch Ergebnisse wie 1234.9 richtig formatieren
Jetzt muss ich eben nur noch Ergebnisse wie 1234.9 richtig formatieren

PB 6.21 | Win 11
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Boah, das ist aber hässlich und bestimmt 100 mal langsamer als wenn du Ganzzahlen nimmst. Mach's doch lieber gleich richtig.
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Ich würde auch Cents und Ganzzahl empfehlen.
Ansonsten genau aufpassen, welchen Typ man nimmt. Float/Double in PB können bspw. die Zahl 0.4 nicht richtig darstellen. Das liegt daran, das die Zahlen hier mit der Basis zwei arbeiten. Versuch mal mit 2^-1, 2^-2, 2^-3 etc. die Zahl 0.4 zu erstellen - es geht nicht. Das ist aber ein allgemeines Problem bei der Sache. In unseren 10er-System kann man die Zahl 1/3 auch nicht darstellen.
Wenn du das Zeug also in PB weiterverarbeiten willst: UNBEDINGT Ganzzahl! Ansonsten hast du nur Schätzwerte - und die können gewaltig daneben liegen!
Aber Varchar? Zeichen für eine Zahl ist nicht gerade sinnvoll. Besonders wenn dann mal ein Scherzkecks Buchstaben reinmischt und wilde Ergebnisse raus kommen.
Ansonsten genau aufpassen, welchen Typ man nimmt. Float/Double in PB können bspw. die Zahl 0.4 nicht richtig darstellen. Das liegt daran, das die Zahlen hier mit der Basis zwei arbeiten. Versuch mal mit 2^-1, 2^-2, 2^-3 etc. die Zahl 0.4 zu erstellen - es geht nicht. Das ist aber ein allgemeines Problem bei der Sache. In unseren 10er-System kann man die Zahl 1/3 auch nicht darstellen.
Wenn du das Zeug also in PB weiterverarbeiten willst: UNBEDINGT Ganzzahl! Ansonsten hast du nur Schätzwerte - und die können gewaltig daneben liegen!
Aber Varchar? Zeichen für eine Zahl ist nicht gerade sinnvoll. Besonders wenn dann mal ein Scherzkecks Buchstaben reinmischt und wilde Ergebnisse raus kommen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Um Auf-, oder Abrunden zu vermeiden (was auch bei PB passiert) nimmt man Cent's beim Rechnen mit der hiesigen Währung per EDV. So sagt der Steuerberater 

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: Datentyp für Währung bei SQLite und anschließend rechnen
Wie meine Vorredner schon sagten: GANZZAHL und Cent als Basis. Kein VARCHAR, kein TEXT, kein BLOB sondern GANZZAHL.
Die Datentypen wurden nicht umsonst in ds DBMS integriert
Die Datentypen wurden nicht umsonst in ds DBMS integriert

PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node