2012-04-09 8 views
0

DataFormatString="{0:F2}" in meiner ascx Seite für Wert 0,0001 Ergebnisse in „0,00“ zu größerem Wert Runden und was ich brauche, ist „0,01“, das weg von Null rundet. Ist es möglich, in asp.net mit DataFormatString zu erreichen, oder sollte ich eine benutzerdefinierte Rundungsmethode verwenden?Dataformatstring dezimal

+6

.01 ist 100-mal größer als .0001. – StuartLC

+0

Es ist in der Tat so. Aber 0,0001 ist größer als 0,00 und ich möchte 0,0001 auf einen größeren Wert runden, wobei Minimum 0.01 ist, aufgrund von {0: F2} Formatierungszeichenfolge – jjjjj

Antwort

3

Sie können dies nicht durch irgendeine Art von Rundung erreichen. 0,0001 in 2 Ziffern wird immer 0.00.

Wenn Sie das wirklich wollen, müssen Sie eine Konvertierungsmethode schreiben. Schreiben Sie zuerst die Spezifikationen aus.

Dataformatstring schlägt eine datengebundene Steuerelement, so dass Sie wie ein extra (berechnet) Spalte mit etwas benötigen r = (v < 0.01 && r > 0.0) ? 0.01 : v;

+0

+1 - Töne wie OP möchte Unterlauf auf dem Bildschirm anzeigen (zB "<0.1") – StuartLC

+0

Ich habe einen Code oben zu meinem OnRowCreated Handler hinzugefügt, funktioniert gut – jjjjj

0

du versuchen:

float fno=2.67f; 
int no=Convert.ToInt32(fno); 

//using Math.Round Function 
decimal d=Math.Round(Convert.Toint64(fno)); 

//if we want after point 2 decimal then 
decimal d=Math.Round(Convert.Toint64(fno),2); 
0
 /// <summary> 
     /// Formats a number using a format string without rounding. 
     /// </summary> 
     /// <param name="value"></param> 
     /// <param name="formatString"></param> 
     /// <returns></returns> 
     public static string Format(object value, string formatString) 
     { 
      double val; 

      if (!Double.TryParse(value.ToString(), out val)) 
      { 
       return ""; 
      } 

      // Special handling for decimals 
      if (formatString.Contains(".")) 
      { 
       int multiplier = (int)Math.Pow(10, getDecimalPlaces(formatString) + 1); 

       // Handle percentage 
       if (!formatString.Contains('%')) 
       { 
        multiplier /= 100; 
       } 

       return (Math.Truncate(val * multiplier)/multiplier).ToString(formatString); // prevent rounding by truncating 
      } 

      return val.ToString(formatString); 
     }