Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

kurze frage: int nach float?

Diskussion: kurze frage: int nach float? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Ich habe nen scanf() auf floateingaben und möchte überprüfen, wann jemand eine bestimmte zahl eingibt. dadurch, dass ich scanf() ...

Antwort
Alt 18.04.07, 21:33   #1 (permalink)
Senior Member
 
Registriert seit: 18.05.04
ghostdog Leistung: Facit NTK
Likes: 0
Standard kurze frage: int nach float?

Anzeige

Ich habe nen scanf() auf floateingaben und möchte überprüfen, wann jemand eine bestimmte zahl eingibt. dadurch, dass ich scanf() mit einer float überprüfe kann man nicht mit "5" oder "2" abgleichen, da er ja intern irgendetwas wie 5.00000 abspeichert. Wie kann ich also mein abzugleichenden int wert nach float umwandeln damit wenn er 5 eingibt (PC liest es als 5.00000...) und ich ein float_von_int(5) als bedingung angebe ich abzweigen kann?

ghostdog ist offline   Mit Zitat antworten
Alt 18.04.07, 21:45   #2 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Indem du das int in ein float konvertierst. Typecasting nennt sich das Ganze.

Code:
int i;
float j;

...

j = (float)i;
i = (int)j;
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 18.04.07, 22:30   #3 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 18.05.04
ghostdog Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von bitmuncher
Indem du das int in ein float konvertierst. Typecasting nennt sich das Ganze.

Code:
int i;
float j;

...

j = (float)i;
i = (int)j;
Hab mal alle Kombos ausprobiert. Passiert nichts.

Hier der Code:
Code:
float z;

while(scanf("%f",&z)!=0){...}

probiert hab ich dann
while(scanf("%f",&z)!=(float)0){...}
while( ((int)(scanf("%f",&z)) !=0){...}

oder

float null=0,z;
int null2=0;

null2=(float)null und umgekehrt und statt der !=0 dann !=null und null2 eingesetzt. 

Wie weiter?^^
ghostdog ist offline   Mit Zitat antworten
Alt 18.04.07, 22:54   #4 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Inwieweit das bei einer 0 anwendbar ist, weiß ich jetzt nicht, müßte ich auch erst die Referenz wälzen. Hab noch nie ein Typecasting für 0 benötigt. Ich würde mich in diesem Fall für die schnelle Lösung entscheiden und das Float in ein Array zerlegen und damit arbeiten. Mag nicht die beste Lösung sein, aber die, die mir spontan einfallen würde.

Code:
float mynumber=66.6; 
char i[sizeof(float)]; 

*(float*)i = mynumber;
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 18.04.07, 23:06   #5 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

also mein scanf gibt mir sowieso immer ein int zurück
allerdings:
Zitat:
Quelle=http://www.rt.com/man/scanf.3.html
return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure.
Eine(scanf("%f",&z)!=0) sollte also nur erfüllt sein, wenn Du eine ungültige Eingabe machst

Zu den Floats allgemein:
http://de.wikipedia.org/wiki/Gleitko...ommaarithmetik
insbesondere bei Vergleichen sollte man sehr aufpassen, da eben die Darstellung der Zahlen nicht unbedingt für ein einfaches "==" geeignet ist.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 18.04.07, 23:33   #6 (permalink)
Senior Member
 
Benutzerbild von lookshe
 
Registriert seit: 10.03.07
lookshe Leistung: 8086
Likes: 19
Standard

also ich weiss ja nicht was du programmieren willst, aber scanf() ist sehr unsicher.
die sicherste möglichkeit ist immer noch alle zeichen einzeln einzulesen und auszuwerten.
lookshe ist gerade online   Mit Zitat antworten
Alt 19.04.07, 08:43   #7 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 18.05.04
ghostdog Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von CDW
Zitat:
Quelle=http://www.rt.com/man/scanf.3.html
return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure.
Eine(scanf("%f",&z)!=0) sollte also nur erfüllt sein, wenn Du eine ungültige Eingabe machst
Ich habs auch schon mit while(scanf("%f",&z)>0.01) probiert. Bei 0.004 geht er nicht raus genauso wenig wie bei 0.

edit: Du hast vollkommen recht, ich habe es jetzt erst verstanden. Die Bedingung ist falsch formuliert. Ich möchte in der Bedingung das "neue" z mit 0 vergleichen und nicht die interne rückgabe von scanf(); Wie kann ich das scanf() in der abfrage beibehalten und dennoch z vergleichen?
ghostdog ist offline   Mit Zitat antworten
Alt 19.04.07, 12:34   #8 (permalink)
 
Benutzerbild von Avenger
 
Registriert seit: 27.12.03
Avenger Leistung: Facit NTK
Avenger eine Nachricht über ICQ schicken
Likes: 0
Standard

lösen könntest es z.b. mit
Code:
while(1)
{
scanf("%f",&z);
if( z == 0.) break;
...
}
Avenger ist offline   Mit Zitat antworten
Alt 19.04.07, 16:13   #9 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 18.05.04
ghostdog Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Avenger
lösen könntest es z.b. mit
Code:
while(1)
{
scanf("%f",&z);
if( z == 0.) break;
...
}
So hätte man es auch lösen können, ich habs aber in ne funktion gepackt und die funktion abgefragt

Code:
 while((z=eingabe())!=0){
ghostdog ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » kurze frage: int nach float?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
kurze Frage (Batch) Xethicalh4exe Code Kitchen 5 19.08.09 13:11
Float nach String konvertieren?? RedEagle Code Kitchen 9 22.05.07 18:23
Kurze http-Frage - Abhören von request andauern jesus Code Kitchen 2 23.01.07 14:06
float-Variablen in C niedriger noob Code Kitchen 2 03.02.02 16:46


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61