Nachkommastellen werden nicht angezeigt/berechnet

Hi,

ich hätte da mal wieder ein Problem. :smiley:

//Variable
float period;

// Berechnung im Loop

period=(pulseIn(pulseIN,LOW)/10000);

//Anzeige im OLED display(ausschnitt aus void draw())

u8g.print(period,3);

Ich hoffe die 3 Schnipsel reichen euch...der Rest funktioniert so weit.

Das Problem ist nun, dass mir zwar entsprechende Nachkommastellen angezeigt werden,
diese aber alle immer auf 0 stehen.

Eigentlich würde ich sogar gerne durch 1.000.000 teilen, aber dann wird mir nur noch 0,000 angezeigt,
weil der Wert dann immer unter 1 liegt.
Mit 10.000 habe ich es nur probiert um zu testen ob überhaupt gerechnet wird.
Und das scheint hinzuhauen.

Gruß

schUk0

Zumindest wenn du

float period = 0.0;

schreibst und

period=(pulseIn(pulseIN,LOW)/10000.0);

hast du deine Nachkommastellen

float

Description

Datatype for floating-point numbers, a number that has a decimal point. Floating-point numbers are often used to approximate analog and continuous values because they have greater resolution than integers. Floating-point numbers can be as large as 3.4028235E+38 and as low as -3.4028235E+38. They are stored as 32 bits (4 bytes) of information.

Läuft !!!

Riesengroßes Danke !

Ich hab schon ein paar Stunden versucht es selbst raus zu finden.

Aber mal ehrlich... steht das irgendwo so EINDEUTIG geschrieben?

Gruß

schUk0

schUk0:
Aber mal ehrlich... steht das irgendwo so EINDEUTIG geschrieben?

Ja.

Addition, Subtraction, Multiplication, & Division
Description

These operators return the sum, difference, product, or quotient (respectively) of the two operands. The operation is conducted using the data type of the operands, so, for example, 9 / 4 gives 2 since 9 and 4 are ints. This also means that the operation can overflow if the result is larger than that which can be stored in the data type (e.g. adding 1 to an int with the value 32,767 gives -32,768). If the operands are of different types, the "larger" type is used for the calculation.

If one of the numbers (operands) are of the type float or of type double, floating point math will be used for the calculation.

https://www.arduino.cc/en/Reference/Arithmetic