C: Wie mache ich eine Zahl immer aufrunden
Ich bin zu wollen eine Funktion, die berechnet die Kosten auf Grundlage der Zeit. Für jede Zeit weniger als drei Stunden würde es wieder eine Flatrate-Gebühr von $2. Für jede Stunde oder einen Teil einer Stunde über hätte, wäre es eine zusätzliche Gebühr von $0.50. Stunden sind Eingaben durch den Benutzer als einen float-Datentyp auf 2 Dezimalstellen. Wie kann ich es machen, wo es immer um die Zeit um eine ganze Stunde? Hier ist der code, den ich bisher für die Funktion:
int calculateCharges(float hours)
{
if (hours <= 3){
return 2.00
}
else
- Ceil-Funktion. tutorialspoint.com/c_standard_library/c_function_ceil.htm
- Sie sagen, "Teil einer Stunde", aber Ihre Funktion nimmt ein
int
, die nicht halten kann gebrochene Werte. Können Sie näher erläutern, was du erreichen willst? - Mein schlechtes. Ich hatte ihn als integer dann zunächst wechselte er zu schweben, um es nehmen alle Zeit-Eingänge. Ich vergaß zu schalten, dass über. Danke für den Fang, die.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst, Sie verwenden den Datentyp
int
, die nicht halten kann gebrochene Werte (und implizit um Sie gegen null, noch bevor die Funktion überhaupt aufgerufen wird.) Sollten Sie verwendendouble
statt, da dies der richtige Datentyp für Gleitkommazahlen.Würden Sie auch wollen, verwenden Sie die
ceil(x)
Funktion gibt die nächste ganze Zahl größer als oder gleichx
.Ihre Anfrage zu beantworten, Sie sollen studieren, Ihren Variablentyp. Sie verwenden Stunden, aber Sie wieder eine 2.00 ist eine schwimmende Anzahl( aka nicht eine ganze Zahl)
Gehören die Mathematik.h-header, um der Lage sein, die Mathematik struc. Es ist ein wirklich helfen-Struktur, wenn Sie zur Berechnung der Werte, berechnen Sie den sinus von einer Zahl, zum Beispiel. In unserer situation, die ceil-Funktion wird immer wieder der Wert gerundet auf die nächste Ganzzahl. Sie können mehr über es hier : http://www.techonthenet.com/c_language/standard_library_functions/math_h/ceil.php
Oh, und außerdem, sagte Sie, weniger als drei Stunden, aber in Ihrer Funktion, die Sie sagen, weniger oder gleich 3 ist. Stellen Sie sicher, dass Sie tatsächlich mit der guten operator oder Sie könnten am Ende mit Ergebnissen, die Sie erwarten, während der Ausführung Ihrer Funktion!
Oh, Sie können sich die ternären operator, um dort ein besseres Verständnis, da es ein bisschen dunkel das erste mal :http://msdn.microsoft.com/en-us/library/ty67wk28.aspx
Hoffe es hilft dir 🙂
int hours
sollte wohldouble hours
, daceil(hours-3)
ist nicht wirklich etwas tun, wennhours
ist eine ganze Zahl.