Warum die Modulus-Division (%) in C nur mit ganzen Zahlen funktioniert
Division mit dem Modulus-Operator (%) in C ist auf ganze Zahlen beschränkt Operanden aufgrund der inhärenten Natur der Ganzzahldivision. Bei der Division ganzer Zahlen ist das Ergebnis natürlich eine ganze Zahl, und der Rest (das Ergebnis nach der Subtraktion des Produkts aus Quotient und Divisor) ist ebenfalls eine ganze Zahl.
Beim Umgang mit reellen Zahlen ist jedoch der Begriff „ „Rest“ wird komplexer. Betrachten Sie das folgende Beispiel:
double x = 3.1; int y = 2; double remainder = x % y;
In diesem Fall wäre das gewünschte Ergebnis 1,1, da 3,1 dividiert durch 2 einen Quotienten von 1 und einen Rest von 1,1 ergibt. Leider behandelt der Moduloperator in C sowohl x als auch y als ganze Zahlen, was zu einem ganzzahligen Rest von 1 statt 1,1 führt.
Um dieses Problem in C zu beheben, können Sie die Funktion fmod aus der Standardbibliothek verwenden. Diese Funktion führt eine Hybriddivision durch und gibt einen gebrochenen Rest zurück, auch wenn die Operanden reelle Zahlen sind. Zum Beispiel:
#include <math.h> double x = 3.1; int y = 2; double remainder = fmod(x, y);
Dadurch wird der korrekte Rest von 1.1 erzeugt und sichergestellt, dass sich die Modulus-Operation sowohl für ganzzahlige als auch für reelle Operanden konsistent verhält.
Das obige ist der detaillierte Inhalt vonWarum funktioniert der Moduloperator (%) von C nur mit ganzen Zahlen und wie kann ich mit gebrochenen Resten umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!