2016-08-03 88 views
0

Wir haben 2 Gleitkommazahlen mit 6 Dezimalstellen. Wir teilen sie auf und zeigen das Ergebnis auf unserer Webseite. Wir zeigen auch die 2 Zahlen, die wir für die Teilung auf der Webseite verwendet haben. Da diese 2 Zahlen sehr lang sind (mit 6 Nachkommastellen), dachten wir, es sei keine gute Erfahrung, die vollen Zahlen zu zeigen. Also haben wir beschlossen, diese Zahlen nur bis zu 2 Dezimalstellen anzuzeigen. Aber das ist verwirrend für die Benutzer, da sie diese 2 Zahlen teilen und versuchen, mit dem Ergebnis übereinzustimmen, das anders ist (wie mit vollen Zahlen berechnet).Division von Gleitkommazahlen mit 2 Dezimalstellen im Vergleich zu Gleitkommazahlen mit 6 Dezimalstellen

Beispiel - Sagen wir, es gibt 2 Nummern: 0.289045 und 0.017457. Wenn wir diese Zahlen teilen, ist das Ergebnis 16,56, was den Benutzern zusammen mit diesen 2 Zahlen als 0,28 und 0,01 angezeigt wird. Jetzt versuchen Benutzer, 0,28 und 0,01 zu teilen, und das Ergebnis, das sie bekommen, ist 28, was nicht mit dem übereinstimmt, was wir zeigen.

Wir dachten vielleicht zeigt 28 (das Teilen von 0,28 und 0,01) ist der richtige Ansatz. Aber das funktioniert nicht für Zahlen wie 0,289045 und 0,001745. Hier würde das Teilen von 0,28 mit 0,00 zu keinem Ergebnis führen. Und wir möchten den Nutzern immer positive Ergebnisse zeigen.

Ich bin nicht in der Lage, an einen richtigen Ansatz zu denken, um dieses Problem anzugehen. Was könnte der richtige Weg sein?

+1

Welche Sprache verwenden Sie? Was ist der Code, den Sie verwenden? – Wajahat

+0

Welche Sprache benutzen Sie? Ich weiß, dass Javascript einige Einschränkungen mit Dezimalstellen hat. Vielleicht sollten Sie, wenn Sie mit festen Dezimalstellen arbeiten, die Zahl mit der 10er Zahl multiplizieren, mit der Sie mathematische Operationen mit Ganzzahlen ausführen können. (Natürlich funktioniert nicht für unendliche Gleitkommazahlen ohne Abrundung von: 1/3 = 0,3333333 ....) –

+0

Ich benutze PHP. – sagun

Antwort

0

Sie könnten alle Zahlen mit 2 oder 3 signifikanten Ziffern anstelle einer festen Anzahl von Dezimalstellen darstellen.

z.B.

0.28/0.017 = 16 

oder

0.289/0.0174 = 16.6 
+0

Dies könnte ein Ansatz sein. Aber dann, wenn die Zahlen etwa 0,289045 und 0,000175 sind. Wir würden am Ende 0,00017 zeigen, was fast so ist wie die volle Zahl. – sagun

+0

Eine andere Alternative wäre, in die wissenschaftliche Notation zu wechseln. 0.17 * 10^-3 etwas mehr überladen anzusehen, aber zumindest ist es einfach sicherzustellen, dass die Saiten immer gleich lang sind – James