Results 1 to 4 of 4

Thread: Probleem met FireDac / mssql/ Real tabelveld en cijfers achter de komma

  1. #1

    Probleem met FireDac / mssql/ Real tabelveld en cijfers achter de komma

    Ik heb een probleem met data ophalen vanuit een MsSql database icm Firedac.

    Ik heb een tabel met een kolom van het type REAL. Het database veld bevat de waarde 3.3

    Wanneer ik met FireDac het record ophaal en ik kijk in de TFDQuery wat de waarden van de velden zijn,
    dan zie ik voor het betreffende veld geen 3.3 maar iets van 3,29999990000425

    Met een test project in C# komt er wel 3.3 terug maar met Delphi 10.2 Tokyo en FireDac niet.

    Heeft iemand een idee waar het probleem vandaan komt? En hoe ik het eventueel kan oplossen.

    Alvast dank,

    Pascal

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,542
    Welkom op ons forum, Pascal (mooie en passende naam).

    Dit heeft te maken met de (on-) nauwkeurigheid van een float waarde (zoals een real).
    TMemoryLeak.Create(Nil);

  3. #3
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,143
    En om dus concreet in te gaan op je waarneming: in C# komt er net zo min 3.3 terug als in Delphi, maar je kijkt daar naar een representatie waarin het getal is afgerond.

    Bij het afbeelden in je applicatie, maar misschien nog belangrijker: bij het _vergelijken_ in je applicatie, moet je rekening houden met de eindige precisie van floating point getallen. In SQL doe je dat met `ROUND` of door ABS(value1 - value2) < 0.0001 te doen, waarbij je 0.0001 zo kiest dat het relevant is voor die specificieke toepassing.

    Gaat het om geld? Dan moet je als het even kan overstappen op een ander datatype dan real/float.

  4. #4
    Wat voor veldtype heeft het veld in je TFDQuery?
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •