Ga naar inhoud
  • 0

Round-functie onder FM Pro 5.0 en .5


Jimjams

Vraag

Ik heb iets vervelends aan de hand.

 

Ik heb een toepassing die binnen ons bedrijf door FM Pro 5.0 en Fm Pro 5.5-gebruikers onder Windows NT 4.0 draait. De output van deze toepassing is

een offerteprijs in euros. Ik kreeg echter onlangs een reactie van een gebruiker dat zijn resultaat afweek van die van een andere gebruiker wat in feite onmogelijk is aangezien de databases dezelfde zijn.

Na enig onderzoek kwam ik echter tot de volgende vaststelling;

Onder FM Pro 5.0 geeft de Round-functie een ander resulaat dan onder FM Pro 5.5!

Als ik bijvoorbeeld Round( 0,99 ; 0) onder FM Pro 5.0 ingeef, is het resulaat 0 terwijl dit onder FM Pro 5.5 het resultaat 1 geeft. Ik heb dit uitgetest op dezelfde machine waarbij ik eerst FM Pro 5.0 heb geïnstalleerd, de test heb uitgevoerd en vervolgens FM Pro 5.5 geïnstalleerd en dezelfde oefening heb gedaan.

Voor alle duidelijkheid: ik maak geen gebruik van functionaliteiten die enkel binnen FM Pro 5.5 beschikbaar zijn.

 

Iemand enig idee wat er aan de grondslag van dit drama kan liggen? :cry:

Link naar reactie

Aanbevolen berichten

  • 0

Even wat test resultaten op mijn Macje:

 

FileMaker Pro 3 (Classic Mode): Round( 0,99 ; 0) = 1

FileMaker Pro 4.1 (Classic Mode): Round( 0,99 ; 0) = 1

FileMaker Pro 5.0 (Classic Mode): Round( 0,99 ; 0) = 1

FileMaker Pro 5.5 (OS X): Round( 0,99 ; 0) = 1

FileMaker Pro 6.0 (OS X): Round( 0,99 ; 0) = 1

 

FileMaker maakt normaal gebruik van de calculatietoolbox van het systeem (Excel bv niet), dus ik geloof Jimjams best dat er onder NT 4 een ander resultaat uitkomt.

 

Als je naar een verklaring zoekt, kan ik er wel 1 verzinnen.

Stel bv dat NT 4 op een andere manier afrond, en dat wordt doorgegeven als een bug. De bug wordt "gefixed", m.a.w. de functie rond nu af zoals op de andere operating systemen.

 

Ondertussen ben je natuurlijk "gesjareld" zoals ze dat bij ons zeggen... :cry:

Link naar reactie
  • 0

Als JimJams gelijk heeft en hetgeen hij beschrijft reproduceerbaar is, dan zitten we hier inderdaad met een (lokaal) drama. Toch verwondert het me dat we nu voor het eerst hiervan horen. Op alle Windows-versies die hier draaien, krijg ik enkel normale resultaten (Win 3.11, Win95, Win 98, Win ME en Win XP).

Link naar reactie
  • 0

Mijn eerste idee was - floating point probleem !!!

 

Maar na het lezen van de uitgevoerde testjes ben ik er niet meer zo zeker van.

Dat zou dan enkel kunnen gebeuren bij meer dan 15 decimale posities (number precision)

En dat is hier duidelijk niet het geval, denk ik.

Het zou mij verbazen dat een offerteprijs uiteindelijk meer dan 15 posities heeft, zelfs in 64 bit.

 

Als er al veel eerder in het systeem een Round functie gebruikt werd, kan het eigenlijk wel iets te maken hebben met het floating point indien deze mee verwerkt worden om het uiteindelijke resultaat te bekomen.

 

We weten dat computers zowel het 'fixed point' als de 'floating point' systeem gebruikt en selectief te werk gaat bij sommige functies.

Niet alle getallen worden voorgesteld/gebruikt door hun logaritmische waarde, hoe zou 2 getallen kunnen optellen ?

 

Indien er echter een deling gebruikt wordt bij het samenstellen van de uiteindelijke uitkomst zou het daar kunnen liggen.

Maar dan moet de uitkomst dezelfde zijn in de verschillende programma's/versies op hetzelfde toestel.......

 

Indien niet.... terug naar af. :cry:

Link naar reactie
  • 0

Ik zit dus echt compleet vast nu.

 

Ik heb ondertussen zowat alles uitgeprobeerd wat er in mij opkwam maar stuit steeds op hetzelfde resultaat. Dat de files corrupt zijn kan ook de reden niet zijn want ik heb een volledig nieuw filetje aangemaakt met 2 velden; 1 simpel leeg nummer-veld dat ik via een script met setfield de waarde Round(0,99 ; 0) meegeef en 1 calculatie-veld met als definitie Round(0,99 ; 0). Beiden geven als resultaat 0!

Ik verwijder vervolgens FM Pro 5.0 en installeer 5.5 en het resultaat wordt 1! Nog even benadrukken dat dit op dezelfde machine gebeurt en dat ik dit probleem dus perfect kan repliceren. Als laatste controle ga ik deze test ook nog bij een aantal

andere 5.0-gebruikers uitproberen maar als ik hier geen oorzaak voor vind, zie ik mij verplicht om voor alle 5.0 gebruikers een 6.0 licentie aan te kopen.

 

Kan er iemand mij vertellen of er nog upgrades te verkrijgen zijn van 5.0 naar 5.5 of eventueel van 5.0 naar 6.0? Op de FM-website vind ik er niets van terug.

Link naar reactie
  • 0

Beste JimJams

 

Ik stel voor je naam te veranderen in Jam(mer)Jam(mer)s, want ik krijg dat hier in geen enkele FileMaker gereproduceerd, ook niet in 5.0.

 

Voor we verder gaan: probeer eens met

 

SetField(Round(299;-2)

 

Welk resultaat krijg je dan? Het zou misschien wel eens kunnen dat je de besmette komma's van Leo hebt overgekregen.

 

Laat iets weten !

Link naar reactie
  • 0

De Round-functie werkt in het geval dat je aanhaalt dus NIET. Alleen, niemand krijgt dat tot hiertoe blijkbaar gereproduceerd. In hoeverre kan je nagaan of het probleem machine specific is? Het is in elk geval niet FileMaker 5.0 specific !

Het verwondert me ook dat er zo weinig reacties komen op deze thread !

Link naar reactie
  • 0

Ik denk dat JeanWM's antwoord het dichtst bij de waarheid zit. Ik herinner me nu dat een klant een aantal jaren geleden een soortgelijk probleem had op een machine met een niet-Intel processor. In zijn opstelling stonden twee computers naast elkaar, zelfde file gehost door een server, zelfde scherm, zelfde gegevensinvoer, en ander calc-resultaat. We hebben dat toen opgelost door die machine te vervangen. Dat ik daar niet eerder aan gedacht heb...

Link naar reactie
  • 0

OORZAAK GELOCALISEERD!

 

Volgende test uitgevoerd:

> Splinternieuwe PC geformateerd (Win NT 4.0 sp 6)

> Filemaker Pro 5.0v1 geïnstalleerd

> Test uitgevoerd - resultaat van Round (0,99 ; 0) = 0!

> patch voor update van 5.0v1 naar 5.0v3 geïnstalleerd

> Test uitgevoerd - resultaat van Round (0,99 ; 0) = 1!

 

Zo simpel was dat.

 

Je moet er verdorie toch maar op het juiste moment aan denken... :wink:

 

Allemaal nog bedankt voor de reacties. Die sturen je uiteindelijk toch wel in de

goede richting.

Link naar reactie
  • 0

Goed dat het nu werkt.

 

Als we op de info-pagina's van FileMaker gaan kijken ( http://www.filemaker.com/support/updaters.html ), dan vinden we echter niets over dit fenomeen, noch in de updater van 5.0v1 naar 5.0v2, noch in de updater naar 5.0v3.

Zo'n belangrijke bug zou toch zeker gesignaleerd moeten zijn!

 

Samengevat:

1) Je zat met een ernstig en onverklaarbaar probleem.

2) Het lijkt opgelost te zijn na een updating.

3) Nergens in de FileMaker-gemeenschap is je probleem nog gesignaleerd en op Clarify vinden we niemand die het kan reproduceren.

4) De FileMaker-updater vermeldt alle opgeloste bugs, maar spreekt totaal niet over dit geval.

 

Ik blijf dus met een onopgeloste vraag zitten, en moet dus weer terug naar mijn vorige posting i.v.m. de onbetrouwbaarheid van computers en m...

Link naar reactie
  • 0

Ik ben het volkomen met je eens AVD.

 

Alle test die ik uitgevoerd heb wijzen er echter op dat het wel degelijk een bug in FM 5.0v1 was: Onder FM 5.5v1 gebeurde de berekening wel correct en de patch loste het probleem ook op. Dat het ontbreekt in de buglist vind ik ook onbegrijpelijk want als het erin had gestaan had ik nooit FM 5.0 geïnstalleerd zonder de patch te voorzien.

 

Dat niemand deze fout kan reproduceren blijft ook voor mij een brainteaser...:?

Link naar reactie
  • 0

Blij dat iemand het kan reproduceren, JeanWM.

 

Ik begon mij eenzaam te voelen.... :wink:

 

Zoals AVD al stelde vind je op de lijst van bugfixes hierover niets terug. Het enige wat er misschien nog iets mee te maken zou kunnen hebben, is het probleem van de leading zero's dat door de updater verholpen wordt.

 

't Is maar een idee...

Link naar reactie
  • 0

Dat had ik inderdaad ook al gemerkt maar het blijft fout. Bovendien had ik geen zin om in mijn toepassing alle Round()-functies aan te passen naar

Round(XXXX ; 1).

In de helpfile staat trouwens duidelijk:

 

Returns the supplied number rounded off to the specified number of decimal places.

 

Round(0,99 ; 1) betekent dus af ronden naar 1 decimaal getal. Dit laat mijns inziens geen ruimte voor interpretatie

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...