Typumwandlung?

Hi,

ich habe hier folgenden Code der mich etwas rätseln lässt

long freq;
long hilf;
long poti_wert;

poti_wert=analogRead(1);
hilf= (1 / poti_wert) ;
freq=(hilf*1000000);

Der Wert der von analogRead liegt immer zwischen 0 und 1023 das weiß ich. Mein Problem ist, dass "hilf" immer 0 ist wenn ich es mir ausgeben lasse. Warum? Müsste nicht eigt. die Nachkommastelle(n) abgeschniten werden?

Falls dem nicht so ist, wie bekomm ich das hin? Sitzt schons eit geraumer Zeit davor und bekomms nicht hin. Typumwandlung hab ich schon gegoogelt und entweder gehts damit nicht oder ich habs falsch gemacht(das ist wohl eher der Fall xD)

Mit

hilf= (1 / poti_wert) ;

ist hilf immer kleiner als "1", und da hilf eine Ganzzahlenvariable ist (und damit, wie Du richtig bemerkt hast, die Nachkommastellen abgeschnitten werden) immer "0".

Zwischen welchen beiden Werten soll sich Dein Wert für freq bewegen? Und in welcher Schrittweite?

Oh klar stimmt.

Wird dann in der nächsten Zeile von der double-Zahl die Nachkommastellen abgeschnitten wenn ich für "freq" long habe?

Wie muss ich denn die Typumwandlung korrekterweise schreiben?
So hab ichs bisher gehabt:

freq=((long)(hilf*1000000));

...ist die Frage, was genau Du haben willst?

Am liebsten den Wert für freq möglichst genau, sprich gerundet nicht abgeschnitten als ganzzahligen Wert.

double hilf;
[...]
freq = (long)(hilf*1000000+.5);

:slight_smile:

PS: Falls das so immer noch nicht klappt probier mal statt "1/poti_wert" "1.0/poti_wert"...

Doch jetzt gehts.

Super Danke :slight_smile:

Kein Problem. :wink: