Wie kann ich die Zahl nur mit den 2 Nicht = Null Dezimalstellen anzeigen?So zeigen Sie nur die ersten 2 Dezimalstellen ungleich 0 an
Beispiel:
Für 0,00045578 I 0,00045 wollen und für 1,0000533535 möchte ich 1,000053
Wie kann ich die Zahl nur mit den 2 Nicht = Null Dezimalstellen anzeigen?So zeigen Sie nur die ersten 2 Dezimalstellen ungleich 0 an
Beispiel:
Für 0,00045578 I 0,00045 wollen und für 1,0000533535 möchte ich 1,000053
Es gibt keine eingebaute Formatierung dafür.
Sie können den Bruchteil der Zahl erhalten und zählen, wie viele Nullen es gibt, bis Sie zwei Ziffern erhalten, und stellen Sie das Format daraus zusammen. Beispiel:
double number = 1.0000533535;
double i = Math.Floor(number);
double f = number % 1.0;
int cnt = -2;
while (f < 10) {
f *= 10;
cnt++;
}
Console.WriteLine("{0}.{1}{2:00}", i, new String('0', cnt), f);
Ausgang:
1.000053
Hinweis: Der einzige gegebene Code funktioniert, wenn es tatsächlich ein Bruchteil der Zahl, und nicht für negative Zahlen. Sie müssen Prüfungen hinzufügen, wenn Sie diese Fälle unterstützen müssen.
Ich würde etwas Äquivalent schreiben, nur ohne eine Schleife: '-ceil (log (x% 1, 10))' gibt dir den Index der ersten Ziffer ungleich Null (zB 'log (0.0002) == -3.69..') – phg
Sehr elegant, ich habe heute etwas gelernt. – GrayFox374
Meine Lösung die Zahl in eine Zeichenfolge zu konvertieren wäre. Suchen Sie nach dem ".", Zählen Sie dann Nullen, bis Sie eine Ziffer ungleich Null finden, und nehmen Sie dann zwei Ziffern.
Es ist keine elegante Lösung, aber ich denke, es wird Ihnen konsistente Ergebnisse geben.
diese Funktion versuchen, die Anzahl der Nachkommastellen mit Parsen eher zu finden als für Nullen suchen (es funktioniert für negative # s als auch):
private static string GetTwoFractionalDigitString(double input)
{
// Parse exponential-notation string to find exponent (e.g. 1.2E-004)
double absValue = Math.Abs(input);
double fraction = (absValue - Math.Floor(absValue));
string s1 = fraction.ToString("E1");
// parse exponent peice (starting at 6th character)
int exponent = int.Parse(s1.Substring(5)) + 1;
string s = input.ToString("F" + exponent.ToString());
return s;
}
die erste 0,00046 sein sollten durch Runden der Zahlen? –
Also, wenn Sie 45.2500001342 bekommen, wollen Sie, dass 45.25 korrekt ist? – craig1231
Als String oder noch dezimal? – Jorge