Hallo,

Ik probeer in Flowcode een aantal berekeningen te doen met grote getallen. In de simulatie werkt het perfect maar in het echt niet. Iemand heeft mij er op gewezen dat dit komt omdat de getallen te groot zijn.

In Flowcode kan ik kiezen tussen een byte (getal tussen 0 en 255), een integer (getal tussen -32768 en 32768), een string en een floating point.

Ik kan niet kiezen uit een long xxx en dergelijke. Dit moet in de C compiler mogelijk zijn maar daarvoor weet ik te weinig van die taal af. Het moet dus echt met behulp van de functies in de grafische interface van Flowcode gebeuren.

Het gaat hier bijvoorbeeld om getallen van ongeveer 180000 waar ik delingen mee doe of waarmee ik een sinus bereken.

Wat is nu eigenlijk de beste manier om met grote getallen te rekenen in Flowcode?

Alvast bedankt.

Niemand die mij kan helpen?

voor delingen pak je sowieso een float. moet lukken met grote getallen.

tenzij je geen komma getallen wilt, dan kun je kiezen voor een div functie oid.

Het rekenen met komma getallen is voor de 8-bits controllers vaak een hele belasting. Als het enigzins kan probeer ik het door bv. de getallen vooraf te bewerken te voorkomen.

Op 13 mei 2011 18:06:44 schreef Progger:
voor delingen pak je sowieso een float. moet lukken met grote getallen.

tenzij je geen komma getallen wilt, dan kun je kiezen voor een div functie oid.

Zijn floats groot genoeg voor dergelijke getallen? Kommagetallen hoeven niet. De uC krijgt het daar moeilijk mij. Dit heb ik al vermeden door de notatie een factor 1000 groter te maken (mm naar um).

Is het ook niet verkeerd om een float te pakken en daar grootte NIET kommagetallen in te stoppen?

Op 15 mei 2011 16:58:37 schreef herald:
Is het ook niet verkeerd om een float te pakken en daar grootte NIET kommagetallen in te stoppen?

Dat is zonde van je geheugen en uitvoeringstijd, ook die getallen worden nog steeds als float behandeld.

180 mm past in een byte. 180000 um past niet eens in een short (zo'n 16-bits ding).

Kies je eenheden zinnig, en je hoeft niet aan de floating point. Mogelijk moet je in eenheden van 50um gaan rekenen. Dan past je 180mm gewoon in een short.

Van een getal als 180000 kan je geen sinus uitrekenen: Die 180000 moet op heel veel decimalen nauwkeurig zijn voordat je een beetje nauwkeurige sinus krijgt. Als je zoiets zou willen is dat een sterke hint dat je iets verkeerd aan het doen bent.

Verder, zodra je een sinus gaat nodig hebben, zit je aan de floating point vast. (alhoewel ik heb al een paar keer gepost hoe het ook zonder kan, maar dat word steeds in de wind geslagen....)