2016-12-24 4 views
-1

Ich brauche etwas Mathe zu tun. Wenn man die eingegebene Zahl eines Benutzers durch 64 teilt, dann mit 64 multipliziert, aber damit es richtig funktioniert, muss man die Dezimalstellen vollständig loswerden, bevor man multipliziert.Entfernen aller Dezimalstellen in C

Beispiel:

150 is entered 
150/64 = 2.34375 (need it to just be 2) 
2 * 64 = 128 
output = 128 
+1

Führen Sie eine Integer-Division durch. '150/64 = 2' und dann' 2 * 64 = 128'. –

+5

Veröffentlichen Sie Ihren Code, damit wir die Variablendeklarationen sehen können. –

+2

Möchten Sie * den Wert runden * oder * abschneiden? Und willst du es nur für die Ausgabe oder für interne Berechnungen? –

Antwort

1

einfach tun.

floor(z/64)*64 [funktioniert perfekt für positive z WRT op Anforderung]

Wie Meik VTune erwähnt, ich soll offensichtlich diese hinzufügen, dass das gleiche kann mit einfach int Gießen beobachtet werden. (Nur wenn der Wert im Bereich von int) Dies ist vorzuziehen, wenn eine negative Zahl verwendet wird.

Falls die Nummer zu groß ist, damit das geteilte Ergebnis nicht in einem int gespeichert wird, verwenden Sie floor.

Bei negativen Zahlen wie -5.6 möchten Sie -5.

Also für Variable z, die doppelt so hoch ist und das Ergebnis nicht in ein int passen ..

if(z<0) z=-(floor(-z)); 
+0

warum runter? ... – coderredoc

+0

weil die Verwendung eines 'int' das gleiche ohne Verwendung von Funktionen tut. –

+0

@MeikVtune .: Überprüfen Sie die Naswer, es ist viel klarer. Vielen Dank. – coderredoc

-2

Wenn Sie Ihre Eingangsgröße so kurz definieren, int oder lang werden Sie nur ganze Zahl Teil erhalten für frei.

int input = 150; 
int output = (input/64) * 64; 
// Now output = 128. 
+0

'char' kann möglicherweise' 150' nicht halten. Auch die Operation wird nicht auf "char" oder "short" durchgeführt. – Olaf

+0

Oh, danke, während, was ist das Problem kurz? – Ariel

+0

@CodingLambdas char ist abhängig von den Einstellungen des Compilers, in clang oder gcc können Sie es signiert oder unsigniert machen. Ich frage nochmal kurz nach was ist das Problem kurz? Ich kann nur sehen, dass es klein ist, um große Zahlen zu halten. – Ariel