数字格式化

有时候不需要太多的小数位数,这个时候可以采用小数截断的方式实现,大概有以下几种方法:
1.ToString控制格式
例如a是一个double型的数,为了只保留4位有效数字,可以采用该方法:
a=Convert.ToDouble(a.ToString("#.0000"));
这样就是直接截断,注意没有四舍五入,对于123.12348和123.12344截断的结果是一样的。
2.四舍五入的方法
这个使用了Math类下的静态方法Round
根据MSDN中的提示,Round的一个函数是这样定义的:
public static double Round(double value,int digits)
其中values是要舍入的双精度浮点数,而digits是返回值中的小数位数,注意digits介于0到15之间
这个时候
对于123.12345和123.12344:
a=Math.Round(123.12348,4);//123.1235
a=Math.Round(123.12344,4);//123.1234
注意这里有个问题,对于123.12345保留四位小数,一定是123.1235吗?
不一定。Round舍入有时称为就近舍入或四舍六入五成双。 它可以将因单方向持续舍入中点值而导致的舍入误差降到最低。 若要控制 Round(Double, Int32) 方法使用的舍入类型,请调用 Math.Round(Double, Int32, MidpointRounding) 重载。 由于用十进制数表示浮点数或对浮点数进行算术运算可能导致的误差,在某些情况下,Round(Double, Int32) 方法可能不会对中点值四舍五入到在 digits 位置中最近的偶数值。 如下面的示例所示,其中 2.135 将舍入为 2.13 而不是 2.14。 这是因为在内部该方法将 value 乘以10 *digits,并且乘法运算在这种情况下会损失精度。 
3.Floor和Ceiling方法
这种方法是先乘以10的N次方,然后Floor或者Ceiling,再除以10的N次方,好处是你可以控制舍入的方向。
 
 
本文转载自:http://379910987.blog.163.com/blog/static/33523797201181322557166/

转载于:https://www.cnblogs.com/ItDotNet/p/5253850.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值