2012-04-09 4 views
0

DataFormatString="{0:F2}" в моей странице ASCX для значения 0,0001 результатов в «0.00» и то, что мне нужно «0,01», то есть округление от нуля. Можно ли достигнуть в asp.net с помощью DataFormatString или использовать какой-то пользовательский метод округления?DataFormatString округления десятичных чисел большее значение

+6

.01 в 100 раз больше, чем 0,0001. – StuartLC

+0

Это действительно так. Но 0.0001 больше 0,00, и я хочу округлить от 0.0001 до большего значения, минимум 0,01 из-за строки форматирования {0: F2} – jjjjj

ответ

3

Вы не можете достичь этого путем округления. 0.0001 в 2 цифры всегда будет 0.00.

Если вы действительно этого хотите, вам нужно будет написать метод преобразования. Сначала напишите спецификации.

DataFormatString предполагает управление с привязкой к данным, так что вы, возможно, потребуется дополнительное (вычисляемое) столбец с чем-то вроде r = (v < 0.01 && r > 0.0) ? 0.01 : v;

+0

+1 - звучит так, как OP хочет показать нижний поток на экране (например, «<0,1») – StuartLC

+0

Я добавил код выше моего обработчика OnRowCreated, отлично работает – jjjjj

0

Вы можете попробовать это:

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); 
     }