Datentyp für Währung bei SQLite und anschließend rechnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Datentyp für Währung bei SQLite und anschließend rechnen

Beitrag von Delle »

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
PB 6.21 | Win 11
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Datentyp für Währung bei SQLite und anschließend rechnen

Beitrag von RSBasic »

Am besten einfach in Cents umrechnen und eine Ganzzahl verwenden.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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

Beitrag von NicTheQuick »

RSBasic hat geschrieben:Am besten einfach in Cents umrechnen und eine Ganzzahl verwenden.
+1
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Datentyp für Währung bei SQLite und anschließend rechnen

Beitrag von Delle »

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 ;)
PB 6.21 | Win 11
Benutzeravatar
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

Beitrag von NicTheQuick »

Boah, das ist aber hässlich und bestimmt 100 mal langsamer als wenn du Ganzzahlen nimmst. Mach's doch lieber gleich richtig.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Datentyp für Währung bei SQLite und anschließend rechnen

Beitrag von GPI »

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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Datentyp für Währung bei SQLite und anschließend rechnen

Beitrag von Bisonte »

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​​
Benutzeravatar
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

Beitrag von TroaX »

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 ;)
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
Antworten