Wie wird eine Gleitkommazahl nach einer bestimmten Anzahl von Dezimalstellen abgeschnitten (keine Rundung)?

9

Ich versuche, die Zahl 684.545007 mit 2 Punkten Genauigkeit in dem Sinne zu drucken, dass die Zahl abgeschnitten (nicht gerundet) wird nach 684.54 .

Wenn ich

benutze %Vor%

es gibt 684.55 aus, aber was ich gerne hätte, ist 684.54 .

Weiß jemand, wie ich das korrigieren kann?

    
vhbsouza 05.10.2012, 02:59
quelle

3 Antworten

23

Was Sie suchen, ist trunkation . Dies sollte funktionieren (zumindest für Zahlen, die nicht besonders groß sind):

%Vor%

Die Konvertierung in Ganzzahl schneidet den Bruchteil ab.

In C ++ 11 oder C99 können Sie die dedizierte Funktion trunc verwenden zu diesem Zweck (aus dem Header <cmath> oder <math.h> . Dies vermeidet die Beschränkung auf Werte, die in einen ganzzahligen Typ passen.

%Vor%     
Kerrek SB 05.10.2012, 03:05
quelle
2

Hier ist mein Ansatz. Es scheint hässlich, funktioniert aber in den meisten Fällen z.B. var kann größer als int sein, kann null oder bizarr "-0" sein. Es geht jedoch nicht mit Unendlichkeiten und NaNs.

%Vor%     
Ruslan Yushchenko 05.08.2014 12:54
quelle
1
%Vor%     
laifjei 05.10.2012 03:22
quelle

Tags und Links