Divisor finden, bei dem nur begrenzte Nachkommastellen heraus kommen

Palladin007

assimiliert
Guten Tag^^


Hatte eine Idee für ein kleines Programmier-Projekt, doch dass das wirklich funktioniert.
Dabei wird eine durchaus sehr große Zahl durch eine kleine Zahl geteilt. Mit klein meine ich z.B. 6stellig^^
Ich muss dabei aber sicher stellen, dass durch diese Zahl keine Periode im Endergebnis oder besonders viele Nachkommastellen stehen, denn dann funktioniert es nicht mehr zuverlässig.

Hat jemand eine Idee, eine Theorie, wie ich eine passende Zahl finden kann? An sich ist die Größe egal, solange es nicht in zu astronomische Größen kommt.


Ich frage das hier, weil die Frage nicht nur an Programmierer gehen soll, sondern auch an die, die vielleicht ein gewisses Mathe-Talent besitzen, oder einfach nur gerne knobeln.

Gruß
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

Ich schätze Du musst die Aufgabenstellung etwas präzisieren. Ich war zwar sackschwach in Mathe aber für mich liest sich Deine Aufgabe zunächst mal so:

ggz : kz = x

Mit ggz= ganz ganz große Zahl, kz= kleine Zahl und x= "glatte" Zahl.

Auf den ersten Blick hast Du also eine Gleichung mit drei Unbekannten. Ganz schön knifflig, wenn Du mich fragst. Du musst also schon noch ein paar Bedingungen mehr angeben. :)
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

Die Sprache ist C#

Ich will einen gegebenen Text in Form von Zahlen bearbeiten. Dazu teile ich durch eine beliebige Zahl.
Das ganzzahlige Teil wird an Punkt1 gespeichert und der Rest an einem anderen Ort. Daraus baue ich dann mit weiteren Schritten jeweils einen Code.
Der Ausgangstext kann so nicht wieder gefunden, da sowohl Divisor unbekannt ist und auch ein Teil des Textes (der Rest hinter dem Komma) fehlen.

Nur darf dieser Rest dann nicht zu groß sein, da das zur Verarbeitung auch von string erfasst werden muss.
Fehlende Stellen könne da ziemlich umfangreiche Auswirkungen auf den Ausgangstext haben.


Deshalb brauche ich eine Zahl, die bei jedem Dvident einen Rest produziert, der sich noch im Bereich liegt, dass er vollständig von Double in String konvertiert werden kann.
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

Ok, danke für die Erklärung. Jetzt sieht die Sache schon klarer aus. Nicht für mich natürlich, ich habe keinen Schimmer wovon Du redest. :unsure: Aber irgendjemand kann Dir sicher helfen. :)
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

Schau mal hier vieleicht findest Du da einen Ansatz. :)
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

>>Ich will einen gegebenen Text in Form von Zahlen bearbeiten.
>>Dazu teile ich durch eine beliebige Zahl.
Du teilst einen Text durch eine Zahl?

>>Der Ausgangstext kann so nicht wieder gefunden[werden?][...].
Na ja. Wenn er nicht mehr gefunden werden soll, könntest Du ihn auch gleich löschen, oder? ;)
Wenn du Ihn natürlich wieder herstellen willst, brauchst Du jedoch den Divisor und den 'Nachkomma-Rest'?

>>[...]da sowohl Divisor unbekannt ist und auch ein Teil des Textes (der Rest hinter dem Komma) fehlen.
Vorausgesetzt, Dein Divisor erzeugt einen Nachkommaanteil.

Im Gegensatz zu chmul sieht die Sache für mich nicht klarer aus. Aber ich verstehe vieles nicht...
 
AW: Divisor finden, bei dem nur begrenze Nachkommastellen heraus kommen

ElSer schrieb:
Du teilst einen Text durch eine Zahl?

Jedes Zeichen hat eine Gegenzahl. Bei Char gibt es 255 Zeichen, wenn ich die ASCII-Zeichen noch mit hinzu nehme, werden es mehr.
So, oder vielleicht auch anders (such ich mir noch aus) werde ich aus dem Text einen Code bauen.
Das ist iegnetlich ziemlich einfach.


ElSer schrieb:
Na ja. Wenn er nicht mehr gefunden werden soll, könntest Du ihn auch gleich löschen, oder? ;)
Wenn du Ihn natürlich wieder herstellen willst, brauchst Du jedoch den Divisor und den 'Nachkomma-Rest'?

Ich habe mir das so gedacht:
Auf einem Server werden Daten gespeichert und auf dem Client auch. Beides zusammen soll den korrekten Datensatz ergeben.
Auf der einen Seite stehen die Ganzzahlen und auf der anderen Seite alles nach dem Komma. Das lässt sich ganz einfach teilen (solange es als String sich in Grenzen hält) und auf diese Weise wird der Ausgangstext geteilt und es ist im Grunde unmöglich, wenn man nicht eines der beide Teile plus dem Divisor und noch ein paar andere Daten hat. Divisor und die anderen Daten, die sich später noch ergeben, werden dann den Code ergeben, den der Nutzer selber irgendwo sicher stellen soll, oder kann auch auf dem Server oder dem Client im Code hinterlegt werden.
Wie ich das anstelle, weiß ich schon, aber dafür brauche ich eine Möglichkeit, wie ich mathematisch einen Divisor für eine umfangreiche Zahl finde, dass am Ende ein Rest übrig bleibt, der sich in gewissen Grenzen (Wie groß die maximal ist, weiß ich ncht. Hängt irgendwie mit double und string zusammen) hält.


ElSer schrieb:
Vorausgesetzt, Dein Divisor erzeugt einen Nachkommaanteil.

Das ist ja die Frage. Ich brauche einen mathematischen Lösungsweg, wie ich, entweder durch Ausprobieren oder durch Rechnen (alles möglich), einen Divisor finde, der die notwendigen Bedingungen erfüllt.

Da ich keine Idee habe, frage ich hier.



Edit:
Habe mir gerade den Link von Jim angeschaut und die Info gefunden, dass Double ja nur eine begrenzte Genauigkeit hat und dass ich lieber decimal nehmen sollte. Das ist ein guter Hinweis, weil daran habe ich nicht gedacht^^
Damit wird der Bereich, wie lang die Nachkommazahl sein darf, antürlich größer, sie sollte trotzdem nicht zu umfangreich sein (z.B. bei einer Periode), denn dann kann ich daraus keinen endlichen String mehr bekommen und das ist im Grunde überlebenswichtig für meine Idee^^
Ich werde da mal weiter lesen, vielleicht finde ich ja noch etwas, das hilft^^
 
Ich habe eben heraus gefunden, dass decimal genau 28 Stellen speichern kann. Es gehen zwar mehr, aber bei 28 ist überall jede Ziffer möglich.

Außerdem ist es an sich nicht notwendig, einen passenden Divisor zu finden.
Ich brauche eine Rechnung, die das erfüllt, was ich suche. Außerdem muss die Rechnung zurück verfolgt werden kann.

Entweder mit einer unbekannten (wäre sicherer), mit zwei Unbekannten (noch sicherer^^, aber mehr sollten nicht sein, da sie den Aufwand für mich nur unnötig vergrößern) oder zur Not auch gar keine Unbekannten.

Es sollten nur ein paar Stellen vor dem Komma und nach dem Komma stehen.
 
Zuletzt bearbeitet:
Oben