URL: https://www.overclockers.at/coding-stuff/modulo_nachprogrammieren_136589/page_1 - zur Vollversion wechseln!
Müsste die Modulo funktion für negative Fließkommazahlen nachprogrammieren.
Weiß zufällig wer wie das geht? ... Für positive Ganzzahlen is ja einfach aber wei schauts mit negativen Zahlen aus?
tia
Sliver
modulo fuer flieszkommazahlen? in assembler oder wo liegt das problem? negativ oder positiv is modulo relativ egal wennst mich fragst.
zahl x durch y dividieren = erg(ganzzahlig)
x - erg * y = modulo
oder so aehnlich, hab weder zeit noch lust mir das genauer anzuschauen
man nehme papier und bleistift und teste anhand einfacher beispiele
Oder man nimmt TI-89 und vergleicht das ergebnis mit dem ergebnis aus der rechnung x - erg*y = modulo.
Und das gilt leider nicht bei negativen fließkomma zahlen.
Ich brauchs übrigens in JAVA (J2ME) und da gibts leider keine Fließkommazahlen. ==> andere Klasse verwenden die hat aber leider keine modulo funktion ==> @#!?!
float mod = n1 % n2;ZitatIch brauchs übrigens in JAVA (J2ME) und da gibts leider keine Fließkommazahlen. ==> andere Klasse verwenden die hat aber leider keine modulo funktion ==> @#!?!
modulo is ja einfach nur der rest der division
float zaehler=..., nenner=..., ergebnis, modulo;
ergebnis=zaehler/nenner;
modulo=zaehler-nenner*(int)ergebnis;
oder alternativ
modulo=nenner*(ergebnis-(int)ergebnis);
sollten beide das selbe ausspucken wenn ich mich nicht irr...
Zitat von sliver33Oder man nimmt TI-89 und vergleicht das ergebnis mit dem ergebnis aus der rechnung x - erg*y = modulo.
Und das gilt leider nicht bei negativen fließkomma zahlen.
Ich brauchs übrigens in JAVA (J2ME) und da gibts leider keine Fließkommazahlen. ==> andere Klasse verwenden die hat aber leider keine modulo funktion ==> @#!?!
Zitat von matfloat mod = n1 % n2;
edit: j2me wofür?
Zitat von xdfkwobei ich bin mal davon ausgegangen dass der lerneffekt darin liegen soll dass die kiddies den modulo operator selber ausprogrammieren
Zitat von sliver33Back to topic:
Laut TI-85:
5%10: mod(5,10) = 5
23.5%10: mod(23.5,10) = 3.5
-23.5%10: mod(-23.5,10) = 6.5 <-----
-5%7: mod(-5,7) = 2
Was mich auf folgenden normalen Java code bringt:
public float mod(a, b) {
int tmp = a/b;
float m = Math.abs(a)-tmp*b;
if(a<0)
return b-m;
else
return m;
}
Hmmm ich glaub so müssts funktionieren. Was sagt ihr dazu?
eigentlich nicht xdfk ... weil ja nicht -3.5 sondern 6.5 rauskommt
Java Code stimmt übrigens . Hab grad a paar Tests gmacht für mich scheint des zu funktionieren
Zitat von sliver33eigentlich nicht xdfk ... weil ja nicht -3.5 sondern 6.5 rauskommt
Java Code stimmt übrigens. Hab grad a paar Tests gmacht für mich scheint des zu funktionieren
ähm sliver
ist dir schon mal der gedanke gekommen dass der TI nen Bug haben könnte?
Zitat von watchoutähm sliver
ist dir schon mal der gedanke gekommen dass der TI nen Bug haben könnte?
sicher? Glaub ich nämlich nicht, weil der TI einfach nach der Formel n-m*int(n/m) rechnet,ich kann da nichts sehen was mir mehrere ergebnisse liefert...Zitat von xdfkkein bug eher mehrere moegliche loesungen zu einem beispiel!
der TI zeigt eben nur eine davon an.
ähm ich glaub das ma dem TI schon vertrauen kann.
Aber nachdem ich was nachprogrammiert hab und jetzt immer das selbe rauskommt, passts für meine Fall und damit bin ich zufrieden.
@xdfk: Wenns nicht zu aufwändig ist würd mich des schon intressieren dast die math. unterlagen ausgrabst. Möchat wirklich wissen warums da zwei unterschiedliche Lösungen gibt.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025