取整保留小数等数字处理方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了取整保留小数等数字处理方法相关的知识,希望对你有一定的参考价值。

问题描述:

后台数据类型为decimal a,在前台页面中显示时需要显示为整数。

我的做法是Convert.ToInt32(a),这样做是强制把内容转换为整数,改变了数据本来的意义。

最终做法是Math.Round(a,0),将a的小数值舍入为指定精度。


先看Math.Round()方法,是将值舍入到最接近的整数或指定的小数位数。

MSDN上可以看到有这些重载的方法。

技术分享

Math.Round(3.44, 1); //Returns 3.4.
Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.  MSDN上给出的示例
Math.Round(3.55, 1); //Returns 3.6 我加的一个示例

可以看到这个“舍入”不是四舍五入,而是银行家舍入:四舍六入五取偶法。规则是当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的同时向前位进一,如果前位数值为偶,则直接舍去该位。


 

再看 Convert.ToInt32(value d)方法,为一种强制类型转换。

如果 value 为两个整数中间的数字,则返回二者中的偶数,即 4.5 转换为 4,而 5.5 转换为 6,同样也是银行家舍入。


 

同样是对decimal取整,二者区别是前者只是将小数点舍入到指定精度,没有改变数据的类型,而后者进行强制转换改变了数据的类型。


以上是关于取整保留小数等数字处理方法的主要内容,如果未能解决你的问题,请参考以下文章

js只保留整数,向上取整,四舍五入,向下取整等函数

js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0

js取整四舍五入等数学函数

1.4726保留整数 保留一位小数 保留两位小数 保留三位小数各是多少

数字取整或保留小数四舍五入的正确写法

c# 小数四舍五入,向上取整,向下取整,见角进元保留多个小数位数