当前位置:编程学习 > C#/ASP.NET >>

ASP.net中c#里有没有四舍五入函数? 3.4进行四舍五入的计算在c#里如何实现?

ASP.net中c#里有没有四舍五入函数?   3.4进行四舍五入的计算在c#里如何实现? --------------------编程问答-------------------- math.ceiling()只能实现向大整数取值,不合适 --------------------编程问答-------------------- Math.Round(2.3658,2) --------------------编程问答-------------------- 楼上的方法不正确!

C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法
Math.Round 方法默认的也是 Banker 舍入法

对于正数,可以加一个 MidpointRounding.AwayFromZero 参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值

例:
Math.Round(3.4 , MidpointRounding.AwayFromZero)

对于负数上面的方法就又不对了

因此需要自己写个函数来处理


double ChinaRound(double value, int decimals)
{
if (value < 0)
{
return Math.Round(value + 5 / Math.Pow(10, decimals + 1), decimals, MidpointRounding.AwayFromZero);
}
else
{
return Math.Round(value, decimals, MidpointRounding.AwayFromZero);
}
}

参考此帖:
http://community.csdn.net/Expert/TopicView3.asp?id=5371548 --------------------编程问答-------------------- 没有那么麻烦。
这样:
double d = 3.4;
TextBox1.Text = d.ToString("0.0");

d = 3.5;
TextBox2.Text = d.ToString("0.0");
看看效果。
如果需要还是double类型的,可以用
double.Parse(d.ToString("0.0"));
--------------------编程问答-------------------- 用这个编程技巧

加上0.5 取整

如3.4+0.5=3.9 取整得3   省掉了 



--------------------编程问答-------------------- 直接转换成整数就自己四舍五入了吧! --------------------编程问答-------------------- 应该不能,直接转换在一般的C编译器内都回舍去 --------------------编程问答-------------------- 用这个编程技巧

加上0.5 取整

如3.4+0.5=3.9 取整得3   省掉了 

这个是可以的吧???? --------------------编程问答-------------------- 没有那么麻烦。
这样:
double d = 3.4;
TextBox1.Text = d.ToString("0.0");

d = 3.5;
TextBox2.Text = d.ToString("0.0");
看看效果。
如果需要还是double类型的,可以用
double.Parse(d.ToString("0.0"));
-------------------

用这个编程技巧

加上0.5 取整

如3.4+0.5=3.9 取整得3 省掉了
------------------

都对,有很多方法可以实现,我只所以用个麻烦的例子,目的是想解释下 Math.Round 的用法 --------------------编程问答-------------------- 直接转换成整数就自己四舍五入了吧!
----------------
当然不能,正如 xidongs(小妖 妖怪也能编程的,你不知道吗?)说的,全舍去 --------------------编程问答-------------------- 用这个编程技巧 

加上0.5   取整 

如3.4+0.5=3.9   取整得3   省掉了 

这方法很实用 
学习。。。 --------------------编程问答-------------------- 用这个编程技巧  

加上0.5 取整  

如3.4+0.5=3.9 取整得3 省掉了 

不错 有创意
学习。。。 --------------------编程问答-------------------- +0.5 好聪明的方法 --------------------编程问答-------------------- 好办法,聪明 --------------------编程问答--------------------
引用 5 楼 xidongs 的回复:
用这个编程技巧

加上0.5   取整

如3.4+0.5=3.9   取整得3       省掉了



这样能做到 四舍五入 ??? --------------------编程问答-------------------- 有,有向上取整数,或者向下取整数,四舍五入 --------------------编程问答-------------------- Convert.ToString(System.Math.Ceiling())这个是向上取整数的,你可以自己看下,很多函数的 --------------------编程问答-------------------- 自己弄个算法 --------------------编程问答-------------------- 留个脚丫!随时看看! --------------------编程问答-------------------- 学习了~~~~~ --------------------编程问答-------------------- (int)2.5 。。 --------------------编程问答--------------------
引用 15 楼 jkyweb 的回复:
引用 5 楼 xidongs 的回复:
用这个编程技巧

加上0.5 取整

如3.4+0.5=3.9 取整得3 省掉了



这样能做到 四舍五入 ???


真的不错 --------------------编程问答-------------------- 5舍6入倒是有现成的方法 嘿嘿 --------------------编程问答--------------------

  //
        // 摘要:
        //     将双精度浮点值按指定的小数位数舍入。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
        //
        // 参数:
        //   value:
        //     要舍入的双精度浮点数。
        //
        //   digits:
        //     返回值中的小数数字。
        //
        //   mode:
        //     value 在两个数字之间时如何舍入的规范。
        //
        // 返回结果:
        //     其小数数字等于 digits 的 value 的最接近的数字。如果 value 的小数数字小于 digits,则返回的 value 保持不变。
        //
        
        public static double Round(double value, int digits, MidpointRounding mode);

如:Math.Round(3.46,1, MidpointRounding.AwayFromZero);
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,