关于C#四舍五入的方法,求大神帮忙!!急! 比如说 我输入一个数 10.45446我想要它小数部分四舍五入,仅仅只是小数部分, 经过四舍五入后输出后为10.46,小数部分仅保存2位 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像可以用 Math.Round ,但里面重载太多,不知道怎么用,有人知道么? Math.Round(10.45446,2) 最后输出是10.45 应该是10.46才对啊 /// <summary>/// 小数位数计算/// </summary>/// <param name="je">数值</param>/// <param name="xsw">小数位</param>/// <param name="jefs">0.四舍五入1.进1法 2.舍1法 3.下取整四舍六入五成双</param>/// <res></res>public static double f_round(double je, int xsw, int jefs){ switch (jefs) { case 0: //四舍五入 return Math.Round(je, xsw, MidpointRounding.AwayFromZero); case 1: //进1(上取整) string str = "1"; for (int i = 1; i <= xsw; i++) { str += "0"; } int temp1 = Convert.ToInt32(str); return Math.Floor(je * temp1) / temp1; case 2: //舍1(下取整) break; case 3: //四舍六入五成双 break; }} 格式化方法请参考msdn:http://msdn.microsoft.com/zh-cn/library/xh1dzhdx string s = (10.45446).ToString("f2");楼主那个不是四舍五入吧? http://blog.csdn.net/xianfajushi/article/details/7214070 c#的Math.Round是靠近偶数法,0.445 结果是.44 0.455结果是.46 这和财务的算法是一致的。如果是金额的计算应该用这个方法而不是四舍五入。 那就试试这个:decimal d = 10.45446m;Math.Ceiling(d * 100) / 100OR Math.Round(d + 0.005) http://msdn.microsoft.com/zh-cn/library/system.math.round(VS.80).aspxdouble d = Math.Round(10.45446, 2, MidpointRounding.AwayFromZero); config文件修改问题 基于http的电信短信网关问题 从C#程序中调用非受管DLLs问题 ASP.net 将页面 导导入word的问题 有关于两个进程互斥的问题,急!!!!! 如何将包含多表的数据集更新到数据库中? 时间参数在查询中得使用 VS2010 工具栏添加的选项卡丢失 mouseleave事件有时触发不了 C#里面实现office XP菜单,如何实现? c#生成 首页页眉不同的word Winform按钮更换PictureBox 图片时,图片不能实时更换显示出来
/// <summary>
/// 小数位数计算
/// </summary>
/// <param name="je">数值</param>
/// <param name="xsw">小数位</param>
/// <param name="jefs">0.四舍五入1.进1法 2.舍1法 3.下取整四舍六入五成双</param>
/// <res></res>
public static double f_round(double je, int xsw, int jefs)
{
switch (jefs) {
case 0:
//四舍五入
return Math.Round(je, xsw, MidpointRounding.AwayFromZero);
case 1:
//进1(上取整)
string str = "1";
for (int i = 1; i <= xsw; i++) {
str += "0";
} int temp1 = Convert.ToInt32(str);
return Math.Floor(je * temp1) / temp1;
case 2:
//舍1(下取整)
break; case 3:
//四舍六入五成双
break; }}
楼主那个不是四舍五入吧?
decimal d = 10.45446m;
Math.Ceiling(d * 100) / 100OR Math.Round(d + 0.005)