Ok Ich habe zwei Funktionen von denen die ersten wie so aussieht:f # ganze Zahl Float Modul 1,0 = 1,0?
let dlth x = float (x.ToString().Length)
, die einen Schwimmer nimmt und gibt die Anzahl der Stellen, der Teil gut funktioniert. Die zweite Funktion sieht wie folgt aus:
let droot x = ((x ** (1./(dlth x))) % 1.)
der ein Schwimmer nimmt und hebt es an eine Strom gleich 1,0/(Anzahl der Ziffern), nimmt dann das Ergebnis und macht Modul 1.0. Was für eine ganze Zahl Null sein sollte.
so für droot 36. es dauert (36,0 ** (1.0/2.0)) was 6.0 ist dann 6.0 mod 1.0 gleich 0.0;
Jetzt funktioniert das gut bis dahin, wo ich die Nummer 81.0 versuche. (und alle Zahlen höher als 81, die funktionieren sollten), die aus irgendeinem Grund 1.0 zurückgeben und meinen Mustervergleich abwerfen. Kann mir jemand sagen, warum das passiert?
PostScript: Dies ist Teil einer Project Euler-Lösung. Wenn Sie wissen, welches Problem, bitte NICHT post die Projekt Euler Lösung. Ich brauche nur Hilfe herauszufinden, warum der Modul ist lustig zurück Ergebnisse
Ich sehe, was du meinst, aber ich denke, mit dem Bereich der Zahlen, die ich überprüfe, wäre es halb unmöglich, einen Test zu erstellen, der für alles funktioniert. Ich denke, was ich tun werde, ist zu sehen, ob ich es überarbeiten kann, um ganz zu vermeiden, schwimmt. – AvatarOfChronos