C# DataFormatString将小数舍入到更大的值

C# DataFormatString将小数舍入到更大的值,c#,asp.net,.net,decimal,rounding,C#,Asp.net,.net,Decimal,Rounding,DataFormatString=“{0:F2}”在我的ascx页面中,值0.0001的结果是“0.00”,我需要的是“0.01”,即从零取整。是否可以使用DataFormatString在asp.net中实现,还是应该使用一些自定义舍入方法?任何舍入都无法实现这一点。2位数中的0.0001将始终变为0.00 如果你真的想要这个,你需要写一个转换方法。首先写出规格 DataFormatString建议使用一个数据绑定控件,因此您可能需要一个额外的(计算的)列,其中包含r=(v0.0)?0.01:

DataFormatString=“{0:F2}”
在我的ascx页面中,值0.0001的结果是“0.00”,我需要的是“0.01”,即从零取整。是否可以使用DataFormatString在asp.net中实现,还是应该使用一些自定义舍入方法?

任何舍入都无法实现这一点。2位数中的0.0001将始终变为0.00

如果你真的想要这个,你需要写一个转换方法。首先写出规格


DataFormatString建议使用一个数据绑定控件,因此您可能需要一个额外的(计算的)列,其中包含
r=(v<0.01&&r>0.0)?0.01:v

任何形式的舍入都无法实现这一点。2位数中的0.0001将始终变为0.00

如果你真的想要这个,你需要写一个转换方法。首先写出规格

DataFormatString建议使用一个数据绑定控件,因此您可能需要一个额外的(计算的)列,其中包含
r=(v<0.01&&r>0.0)?0.01:v

您可以尝试以下方法:

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);
您可以尝试以下方法:

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);
//
///使用无舍入的格式字符串格式化数字。
/// 
/// 
/// 
/// 
公共静态字符串格式(对象值、字符串格式字符串)
{
双val;
如果(!Double.TryParse(value.ToString(),out val))
{
返回“”;
}
//小数的特殊处理
if(formatString.Contains(“.”)
{
int乘数=(int)Math.Pow(10,getDecimalPlaces(formatString)+1);
//处理百分比
如果(!formatString.Contains('%'))
{
乘数/=100;
}
return(Math.Truncate(val*multiplier)/multiplier.ToString(formatString);//通过截断防止舍入
}
返回val.ToString(formatString);
}
//
///使用无舍入的格式字符串格式化数字。
/// 
/// 
/// 
/// 
公共静态字符串格式(对象值、字符串格式字符串)
{
双val;
如果(!Double.TryParse(value.ToString(),out val))
{
返回“”;
}
//小数的特殊处理
if(formatString.Contains(“.”)
{
int乘数=(int)Math.Pow(10,getDecimalPlaces(formatString)+1);
//处理百分比
如果(!formatString.Contains('%'))
{
乘数/=100;
}
return(Math.Truncate(val*multiplier)/multiplier.ToString(formatString);//通过截断防止舍入
}
返回val.ToString(formatString);
}

.01比.0001大100倍。事实确实如此。但是0.0001大于0.00,我想将0.0001四舍五入到更大的值,因为{0:F2}格式字符串的最小值为0.01。01比.0001大100倍。事实确实如此。但是0.0001大于0.00,我想将0.0001四舍五入到更大的值,由于{0:F2}格式化字符串+1,最小值为0.01-听起来像OP想要在屏幕上显示下溢(例如“<0.1”),我已经在我的OnRowCreated处理程序中添加了一段代码,效果很好+1-听起来像OP想要在屏幕上显示下溢(例如“<0.1”)我在上面的OnRowCreated处理程序中添加了一段代码,效果很好