Hej! Tips från lathunden för forum: Definitivt att lagra det som ett decimaltal. >Ser inga som helst fördelar med att använda heltal för att representera flyttal. Jag använder ordet flyttal (kanske slarvigt) när jag inte bryr mig om huruvida vi talar om fixed eller floating point. En valutakurs kan väl möjligen lagras i en floatingpoint (eftersom dessa inte aldrig blir extremt höga eller extremt låga, ok då i krigstid kanske :-), men visst har du rätt att beräkningar av belopp/valutor bör göras med en fixedpoint-datatyp. Jo, men om jag inte vet vilken rubrik jag har störst chans att få svar? Det gäller en ASP-applikation, men frågan är om datatyper i en databas... <b>gäller detta även då jag migrerar till SQLserver eller MySQL?</b>valutatal
Jag har en fråga ang. hur man bör spara valuta i en databas - jag har hittils hört om 2 alternativ - antingen att använda tt decimaltal i databasen och köra det ut och in rakt av - eller att vid sparande ta talet gånger 100 och lagra som heltal, sedan när man tar ut det dela det med 100.
Vilket sätt är bäst? varför är det sätt du föreslår bäst?
MattiasSv: valutatal
Titta gärna igenom vilka forum som finns om du är ovan. Dubbelposta aldrig dina frågor.
[valuta]
--------------------------------------------------------------------------------Sv: valutatal
Om du lagrar det som heltal så måste du antingen utföra onödigt många typkonverteringar fram och tillbaka, eller utföra alla beräkningar med heltal och då gäller det verkligen att hålla tungan rätt i mun för att inte åka på allvarliga avrundningsfel eller overflowexceptions.
Ser inga som helst fördelar med att använda heltal för att representera flyttal. Undantaget möjligen för att vinna precision, dvs nogrannhet. Rekommendationen är minst fyra decimaler tror jag för valutakurser så då skulle du med ett integer (32-bitars) kunna representera belopp endast upp till en miljon ungefär vilket inte räcker i många fall (t ex ekonomisystem). Med 64-bitars long skulle du iofs klara 14-siffriga belopp (inkl fyra decimaler) men klarar access att lagra 64-bitars tal?Sv:valutatal
Valuta är väl vanligvis inget flyttal (floating point) utan fixed point.
>Undantaget möjligen för att vinna precision
Det är väl ingen skillnad i precision mellan skalade heltal och decimaltal? För båda gäller väl att plus och minus är exakta medan multiplikation och division inte är det.
(eller menar du flyttal och inte decimaltal? Flyttal skall man ju aldrig använda för att representera valuta)
Som svar på den ursprungliga frågan: I access finns det en speciell datatyp för valuta. Använd den.Sv: valutatal
<b>>Undantaget möjligen för att vinna precision
Det är väl ingen skillnad i precision mellan skalade heltal och decimaltal? För båda gäller väl att plus och minus är exakta medan multiplikation och division inte är det.
</b>
Jag syftade på följande : Ett 64-bitars heltal kan ha en precision på 18 siffror (möjligen är min terminologi inte korrekt här men jag tror att du förstår vad jag menar). Om man använder 4 decimaler så återstår 14 siffror. En sådan datatyp skulle alltså kunna användas för att komma runt begränsningar i de fixed eller floatingpoint-datatyperna man har tillgång till, om deras "precision" är sämre. Jag syftade inte på precisionen i beräkningar. Detta är det enda skäl jag kan komma på, men samtidigt känner jag inte till något programspråk eller databas där man har en stor och ståtlig 64-bitars datatyp för heltal och sedan bara en ynklig usel liten 16 eller 32-bitars fixed/floatingpoint datatyp. Så vi kommer till samma slutsats, använd <b>inte</b> heltal.
<b>Som svar på den ursprungliga frågan: I access finns det en speciell datatyp för valuta. Använd den.</b>
Amen!Sv:valutatal
Sv: valutatal
Ja, i SQL-servern heter datatyperna för valuta Money (8 bytes) och SmallMoney (4 bytes).