-
round() floor() ceil()之间的区别及总结。四舍五入、保留小数点后几位、最小取整及最大取整
2018-10-12 16:39:28PHP有对浮点数四舍五入、保留小数点后几位、最小取整及最大取整操作的函数,相应的函数有round(),floor(),ceil()。理解了函数的基本应用,才能更好的灵活应用到工作中,下面对各函数进行介绍并举例。 round():对...PHP有对浮点数四舍五入、保留小数点后几位、最小取整及最大取整操作的函数,相应的函数有round(),floor(),ceil()。理解了函数的基本应用,才能更好的灵活应用到工作中,下面对各函数进行介绍并举例。
round():对浮点数进行四舍五入,可以设置保留几位小数,默认是零。
floor():返回不大于给定数的最接近整数,舍去小数部分取整。
ceil():返回不小于给定数的下一个整数。浮点数四舍五入:
round(1.4) : 1
round(1.5) : 2
round(1.6) : 2浮点数取两位小数:
round(1.23454,2) : 1.23
round(1.04234,2) : 1.04
round(1.04534,2) : 1.05小数点位数是负数,比如-2,那么小数点前2位为0,且进行四舍五入计算。
round(1213232,-2) : 1213200
round(1213252,-2) : 1213300浮点数最小取整数(往小取整)
floor(1.3) : 1
floor(1.99) : 1
floor(-1.3) : -2
floor(-1.99) : -2浮点数最大取整数(往大取整)
ceil(1.0) : 1
ceil(1.0001) : 2
ceil(1.99) : 2
ceil(-1.3) : -1 -
php 保留小数点
2020-12-18 09:20:20您可能感兴趣的文章:php number_format() 函数通过千位分组来格式化数字的实现代码PHP number_format() 函数定义和用法PHP把小数转成整数3种方法PHP四舍五入精确小数位及取整PHP保留两位小数并且四舍五入及不四舍五... -
asp.net小数点【取整】和【四舍五入】的方法!
2012-11-10 19:58:351.只要求保留N位不四舍5入 float f = 0.55555f;int i =(int)(f * 100);f = (float)(i*1.0)/100; 2.保留N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2); 3.保留N位四舍...1.只要求保留N位不四舍5入
float f = 0.55555f;int i =(int)(f * 100);f = (float)(i*1.0)/100;
2.保留N位,四舍五入 .
decimal d= decimal.Round(decimal.Parse("0.55555"),2);
3.保留N位四舍五入
Math.Round(0.55555,2)
4,保留N位四舍五入
double dbdata = 0.55555;string str1 = dbdata.ToString("f2");//fN 保留N位,四舍五入
5.保留N位四舍五入
string result = String.Format("{0:N2}", 0.55555);//2位
string result = String.Format("{0:N3}", 0.55555);//3位
6. 保留N位四舍五入
double s=0.55555;result=s.ToString("#0.00");//点后面几个0就保留几位
=============================================================================================
Convert.ToInt32(DateTime.Now.Day / 2)
c# 四舍五入、上取整、下取整
Posted on 2010-07-28 12:54 碧水寒潭 阅读(1446) 评论(0) 编辑 收藏在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:
double d1 = Math.Round(1.25, 1);//1.2 double d2 = Math.Round(1.24, 1);//1.2 double d3 = Math.Round(1.26, 1);//1.3 double d4 = Math.Round(1.35, 1);//1.4
为了用C#来实现“四舍五入”,我写了下面的函数:
代码
/// <summary> /// 实现数据的四舍五入法 /// </summary> /// <param name="v">要进行处理的数据</param> /// <param name="x">保留的小数位数</param> /// <returns>四舍五入后的结果</returns> private double Round(double v, int x) { bool isNegative = false; //如果是负数 if (v < 0) { isNegative = true; v = -v; } int IValue = 1; for (int i = 1; i <= x; i++) { IValue = IValue * 10; } double Int = Math.Round(v * IValue + 0.5, 0); v = Int / IValue; if (isNegative) { v = -v; } return v; }
经过简单的测试,上面的函数能实现对数据的四舍五入法。
Math.Round ()在四舍五入时有个问题:
Math.Round(2.5,0) = 2;
Math.Round(3.5,0) = 4;
2.5应该等于3才对!
在ASP中也存在这个问题,不过ASP中还有个FormatNumber可以用,但目前还不知道怎么使用?
解释:
Math.Round()准确的说,这个函数不是四舍五入,而是四舍六入五凑偶,就是说小于4或大于6的该舍该入是没有争议的,而5处在正中间,如果四舍五入则会造成数据的整体偏差,所以采取的原则是:如果舍入位为5,则舍入后最后一位为偶数,这是国际惯例。
现在做的项目都要5入,解决方法:
目前做法是:
如:(3.45*10+0.5)取整,再除以10
C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法 Banker 's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的
Math.Round 方法默认的也是 Banker 舍入法 在 .NET 2.0 中 Math.Round 方法有几个重载方法
Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)
将小数值舍入到指定精度。MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入这个值
该参数是个 MidpointRounding 枚举
此枚举有两个成员:
AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较大的值。
ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。
所以,要实现四舍五入函数,对于正数,可以加一个 MidpointRounding.AwayFromZero 参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值,例:
Math.Round(3.45, 2, 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);
}
}
有些时候不一定要用四舍五入的,可能需要上取整或下取整:
Math.Ceiling()和Math.Floor
Math.Ceiling(3.1)=4;
Math.Floor(3.9)=3;
取天板值与地板值,与"四舍五入"无关。其实Floor的结果与(int)相同,因此也可以这样写Math.Floor((double)2/3+0.5)
floor 和 ceil是math unit 里的函数,使用前要先 Uses Math。
trunc 和 round 是system unit 里的函数,缺省就可以用。
floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123
trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123
ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124
round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124
C#取整函数向上取整实例
int a = 5;int b = 2;
lbl.Text = Convert.ToString(Math.Ceiling((double)a / (double)b));
转载地址:http://www.sucai.com/Tech/List4/16698.htm
-
matlab GUI里面如何保留小数点后特定位数并显示
2019-03-31 22:41:53笔者最近在GUI编程中想让数值保留小数点后三位数显示在界面中。 常见的函数有: 一、取整函数 1.向零取整(截尾取整) fix-向零取整(Roundtowardszero); >>fix(3.6) ans= 3 2.向负无穷取整(不超过x的...笔者最近在GUI编程中想让数值保留小数点后三位数显示在界面中。
常见的函数有:
一、取整函数
1.向零取整(截尾取整)
fix-向零取整(Round towards zero);
>> fix(3.6)
ans = 3
2.向负无穷取整(不超过x 的最大整数-高斯取整)
floor-向负无穷取整(Round towards minus infinity);
>> floor(-3.6)
ans = -4
3.向正无穷取整(大于x 的最小整数)
ceil-向正无穷取整(Round towards plus infinity);
>> ceil(-3.6)
ans = -3
4.向最近整数取整,四舍五入(四舍五入取整)
round-向最近整数取整,四舍五入(Round towards nearest integer);
>> round(3.5)
ans = 4
二、在小数点后某一位四舍五入,即保留几位小数,也经常用到。
1.数值型 roundn—任意位位置四舍五入
>>a=123.4567890;
>>a=roundn(a,-4)
a = 123.4568
其中roundn函数功能如下:
y = ROUNDN(x) rounds the input data x to the nearest hundredth. %不指定n,精确到百分位 y = ROUNDN(x,n) rounds the input data x at the specified power %精确到小数点后指定位数n
2.符号型
digits(4)
vpa(....)
必须说明:vpa命令不能识别整数与小数,只算总位数,因此对它来说小数整数无论哪个都占一位,例如对9.3154保留两位小数时就得写成:
>>a=9.3154;
>>digits(3)
>>b=vpa(a)
b= 9.32
其中b为符号型变量;
3.字符型
>>a=12.34567;
>>b = sprintf('%8.2f',a)
b = 12.35 其中b为字符型变量。
附大佬的帖子:各种方法总结的很详细。
https://blog.csdn.net/dalaipifengxiansheng/article/details/52641724
https://blog.csdn.net/witnessai1/article/details/52432473
笔者用的是roundn,保留小数点后三位。
在命令行输入:
sum1=[1.2345,2.4567,8.4];
sum1=roundn(sum1,-3);
结果是:
sum1 =
1.2350 2.4570 8.4000
有人会疑惑,不是说显示小数点后三位吗?怎么后面还有多余的0。笔者试了一下,在GUI可编辑文本中显示的时候,后面多余的0是看不到的。所以可以放心使用。
GUI可编程文本显示数值代码如下:
str1=num2str(sum1(1,1));%将sum1数组第一行第一列数字转为字符。
obj1=handles.edit1;%edit1是想显示数字所对应的可编辑文本。
set(obj1,'String',str1);%显示数字
可以通过双击可编辑文本,弹出其属性检查器查看,其中Tag中的标志符就是edit1。
从GUI可编程文本中获取数字的代码是:
a= get(handles.edit1,'String');
sum1=str2double(a); -
php保留一位小数_php保留小数点后两位的几种方法
2020-12-24 13:28:23这个是比较基础的东西了算是,虽说不难,但是希望能对一些人有帮助吧:1,经常用到小数点后取几位,但不能进位的情况。比如3.149569取小数点后两位,最后两位不能四舍五入。结果:3.14。可以使用函数floor。该函数是...这个是比较基础的东西了算是,虽说不难,但是希望能对一些人有帮助吧:
1,经常用到小数点后取几位,但不能进位的情况。
比如3.149569取小数点后两位,最后两位不能四舍五入。结果:3.14。
可以使用函数floor。
该函数是舍去取整。例如,floor(4.66456) 结果:4 。
floor(9.1254) 结果9 。
因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即:
$a=floor(3.149569*100)/100
计算百分数:
$successRate = floor((2/3'])*10000)/10000*100;
$result = $successRate.'%';
输出结果:
66.67%
2,round函数
说明
float round ( float val [, int precision])
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。
precision 也可以是负数或零(默认值)。
例子:
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2); // 5.04
echo round(5.055, 2); // 5.06
?>
注意:
在对正好一半的分数进行舍入时 round() 在偶数次舍去,在奇数次进位。
如果想迫使它对 .5(或 .05)总向一个方向舍入,加上或减去一个很小的因子。
对一半值舍去对另一半值进一的背后原因是避免传统的银行问题,即如果总是舍去则银行从顾客那里多拿了钱,如果总是进一则银行最终会损失了钱。
对此平均舍入则在统计上达到了平衡。
3,sprintf函数
最后一种是使用sprintf函数
定义和用法
sprintf() 函数把格式化的字符串写写入一个变量中。
语法
sprintf(format,arg1,arg2,arg++)
参数 描述
format 必需。转换格式。
arg1 必需。规定插到 format 字符串中第一个 % 符号处的参数。
arg2 可选。规定插到 format 字符串中第二个 % 符号处的参数。
arg++ 可选。规定插到 format 字符串中第三、四等等 % 符号处的参数。
说明
参数 format 是转换的格式,以百分比符号 ("%") 开始到转换字符结束。
以下是可能的 format 值:
%% - 返回百分比符号
%b - 二进制数
%c - 依照 ASCII 值的字符
%d - 带符号十进制数
%e - 可续计数法(比如 1.5e+3)
%u - 无符号十进制数
%f - 浮点数(local settings aware)
%F - 浮点数(not local settings aware)
%o - 八进制数
%s - 字符串
%x - 十六进制数(小写字母)
%X - 十六进制数(大写字母)
arg1, arg2, ++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的。在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
提示和注释
注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符插到 % 符号后面,由数字和 "\$" 组成。
提示:
相关函数:fprintf()、printf()、vfprintf()、vprintf() 以及 vsprintf()。
我的微信:graent_hu
欢迎扫码加我的微信好友,有什么问题我们可以一起探讨,有什么需要也随时欢迎发消息给我~
转载请注明出处:
本文链接:https://www.wlyc.cn/post-59.html
-
java判断小数点后是否为0,是的话则取整,不是的话则保留。
2017-03-17 11:11:391、原理:整数与double类型作差,如果等于0,则小数点后的数字都为0. 2、代码如下: Map map = new HashMap(); Double mainWastage = Double.parseDouble(ct.getMainWastage()); //主材损耗费取整 if... -
Java中如何保留小数点后两位
2020-07-13 20:38:14// BigDecimal.ROUND_HALF_UP表示四舍五入,setScale(2)表示保留两位小数。; BigDecimal bd = new BigDecimal(a);...// java中Math.round()是四舍五入取整,并不能设置保留几位小数。 // 3是半径 -
js 保留小数点后两位。或小数点后为0的话 显示为整数
2020-03-03 16:52:42num.toFixed(2) 四舍五入 var num =2.446242342; num = num.toFixed(2); console.log(num); // 2.45 console.log(typeof num);...不四舍五入 向下取整 num = Math.floor(num * 100) / 100; console.log(num); //2... -
js保留两位小数、取整、四舍五入
2019-12-26 09:58:20这篇文章适合学习js且又不知道如何保留小数点后两位的友友们阅读哦~ 前言 js保留小数点后两位,意思就是 2.1234567,保留2.1234567后面两位得到的就是2.12,接下来就带大家进入js保留小数点后两位的海洋~ 保... -
jsp中怎么把计算出来数字截取保留小数点后两位_Excel中的舍入,做财务的怎么可以不知道...
2021-01-14 11:44:35四舍五入是财务工作中经常遇到的一类问题,也是使用最为频繁的操作。今天老师与大家聊一下关于舍入类的函数及其一些常用的例子一般...1、INT函数I have a minimalist titleINT函数是一个取整函数,除获取一个数字的... -
java math 保留_JAVA除法保留小数点后两位的两种方法 Java Math的 floor,round和ceil的总结...
2021-02-12 21:36:51floor 返回不大于的最大整数round 则是4舍5入的计算,入的时候是到大于它的整数round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,... -
JAVA除法保留小数点后两位的两种方法 Java Math的 floor,round和ceil的总结
2015-05-13 14:12:00floor 返回不大于的最大整数round 则是4舍5入的计算,入的时候是到大于它的整数round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,... -
java除法运算保留两位小数,不只是取整
2016-07-06 17:28:31示例如下:float num= (float)2/3;DecimalFormat df = new DecimalFormat("0.00");...//返回的是String类型,如果没有强转为float或者double,那么int型的2除以3,结果就会默认只有整数,没有小数点后的数值。 -
打印浮点型数据float保留一位小数点
2020-08-22 16:22:25默认为直接舍掉小数部分,取整数值。实例: int a = (int) 10.5f; //a = 10 实现按四舍五入转换则加上 0.5f。实例: float f = 10.5f; int a = (int) (f + 0.5f); // a = 11 2、Float保留一位小数打印: (float... -
php取整函数
2017-12-16 00:03:04ceil()函数采取进一法取整,只要小数点后的值不为0,都会进一,从而取得比原数大的最小整数,但类型还是float。floor()函数采取舍去法取整,不管小数点后是什么都舍去,从而取得一个比原数小的最大整数,但类型还是... -
MySQL数字的取整、四舍五入、保留n位小数
2019-01-17 10:34:49数学函数是MySQL中常用的一类函数。其主要用于处理数字,包括整型和浮点数等等。 MySQL常用的四舍五入函数: ... 返回数值X保留到小数点后D位的值,截断时不进行四舍五入。 ROUND(X) 返回离X最近... -
python - 浮点数取整
2012-04-19 21:00:00方法有好几个,效果也各不相同...内置函数的round(),四舍五入,第二个参数是保留小数点后多少位,默认是0,如round(3.5)返回4.0,round(3.5,1)就返回3.5,不能取整。。。囧 math模块的floor(),取小于等于的整数,如... -
matlab 小数点取前两位_matlab里面如何保留小数特定位数
2020-12-20 19:39:41[转载]Matlab取整函数有:fix,floor,ceil,round.取整函数在编程时有很大用处。一、取整函数1.向零取整(截尾取整)fix-...向负无穷取整(不超过x的最大整数-高斯取整)floor-向负无穷取整(Roundtowardsminusinfinity);&... -
mysql 四舍五入精确_MySQL数字的取整、四舍五入、保留n位小数
2021-01-19 08:15:02数学函数是MySQL中常用的一类函数。...TRUNCATE(X,D)返回数值X保留到小数点后D位的值,截断时不进行四舍五入。ROUND(X)返回离X最近的整数,截断时要进行四舍五入。ROUND(X,D)保留X小数点后D位的值,截断时... -
MySQL笔记---Round在取整时不能四舍五入的问题
2019-11-06 16:46:26MySQL中的Round函数相信很多人都不陌生,功能都知道是保留小数点后多少位数,但是开发中发现一个小问题,使用Round对查询结果进行保留整数时不是四舍五入而是五舍六入。 举个例子,查询语句如下: SELECT ROUND( ... -
PHP中 取整函数 round floor ceil intval之间的区别
2020-12-14 15:31:37PHP有对浮点数四舍五入、保留小数点后几位、最小取整及最大取整操作的函数,相应的函数有round(),floor(),ceil()。 round():对浮点数进行四舍五入,可以设置保留几位小数,默认是零。 floor():返回不大于给定数... -
matlab 小数点取前两位_matlab里面如何保留小数特定位数(转载)
2021-01-12 17:43:23Matlab取整函数有:fix,floor,ceil,round.取整函数在编程时有很大用处。一、取整函数1.向零取整(截尾取整)fix-向...向负无穷取整(不超过x的最大整数-高斯取整)floor-向负无穷取整(Roundtowardsminusinfinity);>&... -
matlab 小数点取前两位_【转载】matlab里面如何保留小数特定位数
2020-12-20 19:39:36Matlab取整函数有:fix,floor,ceil,round.取整函数在编程时有很大用处。一、取整函数1.向零取整(截尾取整)fix-向...向负无穷取整(不超过x的最大整数-高斯取整)floor-向负无穷取整(Roundtowardsminusinfinity);>&... -
关于Java中两个整数相除,有余数就向上取整的问题
2018-11-10 13:45:44所以如果希望得到运算结果能够保留小数点后面的数,就需要这两个整数至少有一个类型转换为浮点数。 比如: //这里相减是我代码里复制来的逻辑 根据实际情况转型就行了 int numberA = 8; int numberB= 2; //将结果... -
小数点后两位向上取值
2019-08-19 16:53:43最近写一个功能,需要计算商品的价格,由“数量*单价*折扣”,然后需要保留小数点后两位...// 输出结果为 19.26,而实际上不取整的值为19.268,保留小数点后两位向上取值应为19.27 于是改用向上取值 Math.ceil(1 ... -
浮点类型 比较特别的操作,取整和不四舍五入
2017-12-19 18:28:23//下面结果所得2.5678 保留两位不进行4舍5入等于2.56 double nCurExpose=25678; double nCurRGB=10000; double dblRgbScale=(double)nCurExpose/(double)nCurRGB;//2.5678 int nRgbScale=(int)(dblRgbScale*100)... -
access四舍五入取整round_轻松办公|你一点儿也不懂“四舍五入”
2020-12-30 18:40:12习惯性的会把数字参数写为2,那是因为我们总是需要保留到小数点后两位嘛,但是我们忽略了它的参数,不止有整数,还有负数和0哦,一起学习一下吧:roundround函数:返回某个数字按指定位数取整后的数字。round(数值,...