Rechenfehler bei Quadratfunktion
Übersicht

HyDr0xBetreff: Rechenfehler bei Quadratfunktion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Anscheinend kann Blitzbasic Zahlen wie z.B. 36789 nicht quadrieren, zumindest nicht richtig. 30000 quadriert BB fehlerfrei.
Da man Strings auch nicht quadrieren kann weiß ich nicht genau wie ich nun zu einem richtigen Ergebnis komme. Mein Versuch lautet wie folgt: z.B. 23^2 = 20^2+3^2+2*2*3*10=529 Scheint für mich eine passende Lösung des Problems zu sein. Da sie die Formel aber nach jeder neuen Stelle zu ändern scheint Frage ich euch ob hier jemand ist der mir die genaue Formel geben kann für n- Stellen. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Quadrieren?
x*x 23^2 = 23*23 |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hinzu kommt das du mit deinem 36789 bei 1,3 Mia ankommst.
2,1XXX ist das maximum, was überhaupt dargestellt werden kann mit Int. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
also: 36789^2 ergibt: 1.35343e009
36789*36789 ergibt 1353430521 Beide Ergebnisse sind korrekt, der zweite 100%ig, der erste innerhalb der Genauigkeit von 32-Bit-Floats, die nunmal nur 6 Nachkommastellen haben. ^ verwendet augenscheinlich Floats. Wenn Du x*x nimmst kannst du also genauere Ergebnisse erhalten. EDIT: bis ca. 46200² ist mit int zu arbeiten, darüber gehen nur noch die floats. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ist anzumerken das Floats bei grossen als auch sehr kleinen Zahlen sehr ungenau sind. Das sollte man immer im Hinterkopf behalten. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok thx für eure Hilfe. Hatte es mit x*x gar nicht erst versucht da ich dachte es wäre ein interner Fehler oder so ... Allerdings muss ich letztendlich mit Werten über 46200 arbeiten somit sind die Ergebnisse dann ungenau. Abhilfe kann da nur noch die oben genannte Formel schaffen, da ich dann z.B. 3000000000^2 auf 3^2 kürzen und dann als String wieder erweitern und mit den anderen Werten adieren kann. Also würde ich mich weiterhin freuen wenn mir jmd. die Formel nenne könnte. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
über 46200 ist es nicht ungenau sondern führt direkt zu einem fehler.
Da musst du ins Codearchiv und die String Rechenfunktion nehmen, das ist die einzige noch wirklich praktikable Lösung für den Fall. Denn Primfaktorzerlegung ist mit Blitz recht unrealistisch, dafür ist der Mathebackend von Blitz (ausser bei BM) einfach zu langsam. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Denn Primfaktorzerlegung ist mit Blitz recht unrealistisch, dafür ist der Mathebackend von Blitz (ausser bei BM) einfach zu langsam.
Schade, genau das wollt ich mal ausprobieren ... Dann kann ich mir die Mühe ja sparen. Trotzdem nochmal thx für die Infos ! |
||
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
@dreamora: ich weiß zwar nicht, wie du vom quadrieren zur primfaktorzerlegung kommst, aber letztgenannte ist mit bb durchaus schnell lösbar. Die allermeisten
Zahlen haben viele kleine Faktoren, da ist es eine Sache von 1 ms. Bei Zahlen die nur genau 2,3 oder 4 Teiler haben (Primzahlen, Primzahlen² und 2 Primzahlen multipliziert) ist es schon langsamer, wenn man das gleiche Verfahren anwendet wie bei Zahlen mit vielen Faktoren. However, für beide Varianten habe ich im Codearchiv unter Primfaktorzerlegung mal was gepostet. Abgesehen davon ist es natürlich richtig, dass man über 2^31 in absoluter Genauigkeit bei BB nur mit Stringrechenfunktionen weiterkommt. Rallimen hat da ja mal was schönes vorgelegt. Ich selbst schreibe/schrieb ja auch an einer Alternative, die aber aus diversen privaten Gründen noch vor der Veröffentlichung steht. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group