float

[Adattípusok]

Leírás

Lebegőpontos számok adattípusa, egy tizedesvesszővel rendelkező szám. A lebegőpontos számokat gyakran használják az analóg és a folytonos értékek közelítésére, mivel nagyobb a felbontásuk, mint az egész számoknak. A lebegőpontos számok -3,4028235E+38-tól 3,4028235E+38-ig lehetnek. 32 bites (4 bájt) információként tárolódnak.

Szintaxis

float var = val;

Paraméterek

var: változónév.
val: az adott változóhoz rendelt érték.

Példa

float myfloat;
float sensorCalbrate = 1.117;

int x;
int y;
float z;

x = 1;
y = x / 2;          // y most 0-t tartalmaz, az int nem tarthat törteket
z = (float)x / 2.0; // z most 0,5-öt tartalmaz (nem 2-t, hanem 2.0-t kell használni)

Megjegyzések és figyelmeztetések

Ha lebegővel számol, tizedesvesszőt kell hozzáadnia, ellenkező esetben a rendszer int-ként kezeli. A részletekért lásd a Lebegőpontos állandók oldalt.

A float adattípus csak 6-7 tizedesjegy pontosságú. Ez a számjegyek teljes számát jelenti, nem a tizedesvesszőtől jobbra lévő számjegyeket. Más platformoktól eltérően, ahol a double használatával nagyobb pontosságot érhet el (például legfeljebb 15 számjegy), az Arduinon a double mérete megegyezik a floatéval.

A lebegőpontos számok nem pontosak, és összehasonlítva furcsa eredményeket adhatnak. Például a 6.0 / 3.0 nem egyenlő a 2.0-val. Ehelyett ellenőriznie kell, hogy a számok közötti különbség abszolút értéke kisebb-e valamilyen kis számnál.

A lebegőpontos számok egészre történő matematikai átalakítása csonkolást eredményez:

float x = 2.9; // Lebegőpontos típusú változó
int y = x;  // 2

Ha ehelyett a konverziós folyamat során kerekíteni szeretne, 0.5-öt hozzá kell adnia:

float x = 2.9;
int y = x + 0.5;  // 3

vagy használja a round() függvényt:

float x = 2.9;
int y = round(x);  // 3

A lebegőpontos matematika a számítások végrehajtása során is sokkal lassabb, mint az egész számok matematikája, ezért kerülni kell, ha például egy ciklusnak a legnagyobb sebességgel kell futnia egy kritikus időzítési függvényhez. A programozók gyakran igyekeznek a lebegőpontos számításokat egész számokká alakítani a sebesség növelése érdekében.

Lásd még