Hallo,
ich habe ein Problem, und ich komme einfach nicht auf die Lösung.
Ich habe die Werte
int number1;
int maximum;
int percentage;
number1 hat nun den Wert 200, maximum den Wert 20000. Daraus soll nun der Prozentsatz berechnet werden, also percentage = (number1/maximum)*100.
Allerdings kommt dort nie etwas anderes als 0, 1 oder -1 raus. Wenn ich percentage als double oder float definiere, dann komt immer 0.00 raus.
Ich werd noch verrückt
Das ganze läuft auf einem Arduino Duemilanove.
system
June 11, 2011, 6:14pm
2
versuch mal alle als double zu deklarieren, damit müsste es gehen.
EDIT:
Und eine percentager immer als Double und anschließender Multiplikation. Also bei 25% eben Wert * 0.25;
system
June 11, 2011, 6:19pm
3
naja ein int/int mit dem Ergebniss <1 ist 0 --- mal ("") -egal was auch immer du das nimmst- bleibt 0
mach mal number1 100/maximum
Gruß JKW
Danke, allerdings gibt es immer noch Probleme:
Beispiel:
number1 = 1000;
number1 * 100 ergibt 31072.00 ???
und das obige "Ergebnis2 ergibt dann bei Teilung durch 20000 -1.55
Kann der Arduino diese Zahlen vielleicht nicht händeln?
mfg, Dominic
system
June 11, 2011, 7:36pm
5
genau 1000 * 100 > 32768
entweder als double oder "geschickter teilen"
*100/20000 == /200 oder ?
Hi,
habe es hinbekommen, scheinbar waren die Zahlen zu groß, sodass dort nichts rauskommen konnte.
Anstatt das ich den Dividenden mit 100 multipliziere, teile ich den Divisor einfach durch 100. Kommt aufs selbe ruas, und die Zahlen sind nicht mehr so groß. Es klappt auch wunderbar.
Danke für die Hilfe!
system
June 11, 2011, 9:45pm
7
Schau dir mal Datentypen im Allgemeinen an.
Es liegt nicht am Arduino, dass ein Integer ein Integer ist. Ein Integer hat im Normalfall 16 Bit, was einen Wertebereich von 65535 verschiedenen Werten ermöglicht.
Wenn du größeren Wertebereiche benötigst, sollstest du einen anderen Datentyp wählen.
EDIT:
Mit Integer ([.mw-parser-output .IPA a{text-decoration:none}ˈɪnteɡɐ], englisch [ˈɪntɪdʒə], für ganze Zahl; von lateinisch numerus integer) wird in der Informatik ein Datentyp bezeichnet, der ganzzahlige Werte speichert. Als grundlegender arithmetischer Datentyp sind Integer in der Hardware fast aller Rechenanlagen vorhanden und in nahezu jeder Programmiersprache verfügbar. Meist werden mehrere Integerarten bereitgestellt, die sich in der Darstellung, der Länge oder dem Vorhandensein eines Vorzeic...