Come posso visualizzare il numero con solo 2 decimali = zero?Come visualizzare solo i primi 2 decimali non equivale a 0
Esempio:
Per 0,00,045578 millions voglio 0,00045 e per 1,0000,533535 millions voglio 1,000053
Come posso visualizzare il numero con solo 2 decimali = zero?Come visualizzare solo i primi 2 decimali non equivale a 0
Esempio:
Per 0,00,045578 millions voglio 0,00045 e per 1,0000,533535 millions voglio 1,000053
Non esiste una formattazione incorporata per questo.
È possibile ottenere la parte frazione del numero e contare quanti zeri ci sono fino a quando non si ottengono due cifre e unire il formato da quello. Esempio:
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);
uscita:
1.000053
Nota: Il dato codice funziona solo se effettivamente c'è una parte frazionaria del numero, e non per i numeri negativi. È necessario aggiungere assegni per questo se è necessario supportare tali casi.
Stavo per scrivere qualcosa di equivalente, solo senza un ciclo: '-ceil (log (x% 1, 10))' ti dà l'indice della prima cifra diversa da zero direttamente (es. 'log (0.0002) == -3.69..') – phg
Molto elegante, ho imparato qualcosa oggi. – GrayFox374
La mia soluzione sarebbe quella di convertire il numero in una stringa. Cerca ".", Quindi conta gli zeri finché non trovi una cifra diversa da zero, quindi prendi due cifre.
Non è una soluzione elegante, ma penso che vi darà risultati coerenti.
Prova questa funzione, utilizzando analisi per trovare il # di cifre decimali, piuttosto che alla ricerca di zeri (funziona per #s negative pure):
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;
}
caso in cui il primo essere 0,00,046 mila, a causa degli arrotondamenti? –
Quindi se ottieni 45.2500001342 vuoi che sia 45.25 corretto? – craig1231
Come stringa o ancora decimale? – Jorge