Math.Round hält die nachgestellte Null nicht

7

Ich brauche alle Werte auf zwei Dezimalstellen gerundet. Also 1.401 sollte auf 1.40 runden, aber Math.Round(value, 2) wird auf 1.4 gerundet.

Wie kann ich die nachfolgende Null erzwingen?

    
Blade3 06.09.2012, 20:09
quelle

7 Antworten

17

1.4 ist das gleiche wie 1.40 - Sie möchten es nur anders darstellen. Verwenden Sie eine Formatzeichenfolge, wenn Sie ToString - wie value.ToString("0.00")

aufrufen     
Paul Phillips 06.09.2012, 20:11
quelle
12

1.4 == 1.40 Das einzige Mal, dass Sie jemals eine nachgestellte 0 benötigen, ist, wenn Sie die Zahl ..i.e anzeigen. formatiere es in einen String.

%Vor%     
Stan R. 06.09.2012 20:11
quelle
5

Die nachgestellte Null ist mehr eine Formatierung als ein Wertproblem, also verwenden Sie

%Vor%     
Joey 06.09.2012 20:11
quelle
2
___ answer12307657 ___

Die nachgestellte Null ist mehr eine Formatierung als ein Wertproblem, also verwenden Sie

%Vor%     
___ qstnhdr ___ Math.Round hält die nachgestellte Null nicht ___ answer12307654 ___

%code% Das einzige Mal, dass Sie jemals eine nachgestellte 0 benötigen, ist, wenn Sie die Zahl ..i.e anzeigen. formatiere es in einen String.

%Vor%     
___ antwort43791090 ___

Ich weiß, das ist eine alte Frage, aber könnte jemandem helfen!

Ich benutze eine c # xml-Klasse, um sie aufzufüllen und dann zu xml zu serialisieren. Einer der Werte ist ein Doppel. Wenn ich dem Wert eine '7' zuweise, wird diese auf '7' serialisiert, wenn ich tatsächlich '7.00' benötige. Am einfachsten war das nur zu tun:

%Vor%

Und das macht den Wert 7.00 statt nur 7. Dachte, das war besser, als einen ToString zu machen und ihn dann wieder zu analysieren.

    
___ answer12307656 ___

%code% ist das gleiche wie %code% - Sie möchten es nur anders darstellen. Verwenden Sie eine Formatzeichenfolge, wenn Sie %code% - wie %code%

aufrufen     
___ answer12307665 ___

Die abschließende Null ist nur eine Präsentation. Mathematisch sind %code% und %code% gleichwertig.

Verwenden Sie stattdessen die Formatierung, um die 2 Dezimalstellen darzustellen:

%Vor%     
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ answer12307672 ___

Es ist eine Zahl (double?), also hat es keine nachgestellte Null - Sie müssen es zum Text machen und eine abschließende Null erzwingen.

    
___ answer48526700 ___

Es hängt damit zusammen, ob Sie eine Dezimalzahl oder eine Doppelzahl verwenden.

Während intern (wie aus dem Quellcode hervorgeht) %code% behält die abschließenden Nullen auch bei einem Doppel, die Tatsache, dass es als Doppel im Speicher gespeichert wird, bewirkt automatisch das Entfernen aller nachfolgenden Nullen

Wenn Sie also Nullen machen wollen, können Sie entweder die String-Anzeigefunktionen verwenden, um sie zu formatieren, da andere geantwortet haben, oder Sie müssen den ursprünglichen Wert als Dezimalzahl übergeben (intern %code% wird verwendet) nur mit Dezimalzahlen), und stellen Sie sicher, dass Sie das Ergebnis nicht zu einem Doppelpunkt umwandeln und es auch nicht in einer Doppelvariablen speichern.

Wenn Sie eine Dezimalzahl haben und keine nachgestellten Nullen haben wollen, müssen Sie sie einfach auf double umwandeln (Sie können die Eingabe entweder in %code% oder das Ergebnis umwandeln, es spielt keine Rolle so lange wie irgendwo in der So wird es zu einem Doppel).

    
___ tag123rounding ___ Einen numerischen Wert zu runden bedeutet, ihn durch einen anderen Wert zu ersetzen, der ungefähr gleich ist, aber eine kürzere, einfachere oder explizitere Darstellung hat. ___ qstntxt ___

Ich brauche alle Werte auf zwei Dezimalstellen gerundet. Also 1.401 sollte auf 1.40 runden, aber %code% wird auf 1.4 gerundet.

Wie kann ich die nachfolgende Null erzwingen?

    
___
ADringer 04.05.2017 19:15
quelle
2

Die abschließende Null ist nur eine Präsentation. Mathematisch sind 1.40 und 1.4 gleichwertig.

Verwenden Sie stattdessen die Formatierung, um die 2 Dezimalstellen darzustellen:

%Vor%     
everton 06.09.2012 20:12
quelle
1

Es ist eine Zahl (double?), also hat es keine nachgestellte Null - Sie müssen es zum Text machen und eine abschließende Null erzwingen.

    
naspinski 06.09.2012 20:12
quelle
0

Es hängt damit zusammen, ob Sie eine Dezimalzahl oder eine Doppelzahl verwenden.

Während intern (wie aus dem Quellcode hervorgeht) Math.Round() behält die abschließenden Nullen auch bei einem Doppel, die Tatsache, dass es als Doppel im Speicher gespeichert wird, bewirkt automatisch das Entfernen aller nachfolgenden Nullen

Wenn Sie also Nullen machen wollen, können Sie entweder die String-Anzeigefunktionen verwenden, um sie zu formatieren, da andere geantwortet haben, oder Sie müssen den ursprünglichen Wert als Dezimalzahl übergeben (intern Decimal.Math.Round wird verwendet) nur mit Dezimalzahlen), und stellen Sie sicher, dass Sie das Ergebnis nicht zu einem Doppelpunkt umwandeln und es auch nicht in einer Doppelvariablen speichern.

Wenn Sie eine Dezimalzahl haben und keine nachgestellten Nullen haben wollen, müssen Sie sie einfach auf double umwandeln (Sie können die Eingabe entweder in Math.Round oder das Ergebnis umwandeln, es spielt keine Rolle so lange wie irgendwo in der So wird es zu einem Doppel).

    
yoel halb 30.01.2018 16:57
quelle

Tags und Links