4 Stimmen

Wie berechne ich die erste Dezimalstelle einer Division zwischen großen Zahlen?

Ich habe zwei unsigned long longs X und Y, wobei X < Y, aber beide sehr groß sein können. Ich möchte die erste Ziffer nach dem Dezimalpunkt von X / Y berechnen. Zum Beispiel, wenn X 11 und Y 14 ist, dann ist 11 / 14 .785…, also sollte das Ergebnis 7 sein.

(X * 10) / Y würde funktionieren, außer wenn X * 10 überläuft, produziert es das falsche Ergebnis. Die Konvertierung in double würde funktionieren, wenn ich Grund zu der Annahme hätte, dass sie genau genug ist, um das richtige Ergebnis zu berechnen.

Dies ist in C. Vielen Dank für jede Hilfe!

-1voto

James Anderson Punkte 26827

Wenn Sie bereit sind, die Bereichseinschränkung zu akzeptieren, könnten Sie alles in ganzzahliger Arithmetik tun:-

(X * 10) / Y

In Ihrem Beispiel:

(11 * 10) / 14

\=> 110 / 14

\=> 7

Die Einschränkung besteht darin, dass Sie den Höchstwert von X um einen Faktor von 10 reduziert haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X