Holen Sie sich die letzten 2 Dezimalstellen ohne Rundung

7

In C # versuche ich, die letzten zwei Dezimalstellen eines Doppelzeichens ohne Rundung zu erhalten. Ich habe alles von Math.Floor bis Math.Truncate probiert und nichts funktioniert.

Beispiele der Ergebnisse, die ich gerne hätte:

%Vor%

Irgendwelche Ideen?

    
mint 29.03.2012, 19:05
quelle

5 Antworten

22

Nun, mathematisch ist es einfach:

%Vor%

Verschieben Sie die Dezimalstelle zwei Stellen nach rechts, um sie zu einem int zu transkribieren, verschieben Sie sie um zwei Stellen nach links. Es mag Wege geben, dies auch zu tun, aber ich kann jetzt nicht nachsehen. Du könntest es verallgemeinern:

%Vor%     
Ed S. 29.03.2012, 19:07
quelle
14

Mein Rat: Verwenden Sie in erster Linie double nicht . Wenn Sie Dezimalrundung benötigen, dann sind die Chancen gut, dass Sie decimal verwenden sollten. Was ist Ihre Bewerbung?

Wenn du ein Double hast, kannst du es so machen:

%Vor%

Beachten Sie, dass diese Technik fehlschlägt, wenn der absolute Wert des Double größer als 792281625142643375935439504 ist, weil die Multiplikation mit 100 fehlschlägt. Wenn Sie mit so großen Werten umgehen müssen, müssen Sie spezielle Techniken anwenden. (Natürlich ist es zu der Zeit, dass ein Double so groß ist, dass Sie die Werte mit zwei Nachkommastellen sowieso nicht mehr darstellen können.)

    
Eric Lippert 29.03.2012 20:04
quelle
5
%Vor%     
ionden 29.03.2012 19:10
quelle
2

Eine allgemeine Lösung:

%Vor%

Dann

%Vor%

Erzeugt das gewünschte Ergebnis x=5.34 .

    
countfromzero 29.03.2012 19:12
quelle
2
%Vor%

d. h.

%Vor%     
Octane 04.01.2014 18:38
quelle

Tags und Links