DataFormatString="{0:F2}"
在我的 ascx 页面中,值为0.0001的结果为“ 0.00 ”,而我需要的是“ 0.01 ”,即从零四舍五入。是否可以在 asp.net 中使用 DataFormatString 实现,或者我应该使用一些自定义舍入方法?
问问题
2960 次
3 回答
3
您无法通过任何类型的舍入来实现这一点。2 位数的 0.0001 将始终变为 0.00 。
如果你真的想要这个,你需要编写一个转换方法。先写出规格。
DataFormatString 建议使用数据绑定控件,因此您可能需要一个额外的(计算的)列,例如 r = (v < 0.01 && r > 0.0) ? 0.01 : v;
于 2012-04-09T13:06:28.070 回答
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);
于 2012-04-13T11:57:33.960 回答
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);
}
于 2013-10-26T19:59:09.070 回答