qhnw.net
当前位置:首页 >> DouBlE转int四舍五入吗 >>

DouBlE转int四舍五入吗

printf限定位数输出时是4舍5入.double->float,是不会4舍5入的,直接丢弃尾部的参数.

只取整数部分

电脑没那么聪明,只会直接丢失精度,b=2

可以,直接强转就行double d = 34.63;int i = (int) d;

用Math.Ceiling,这是向上进位取整函数.例如:Math.Ceiling(32.4) 结果是33; Math.Ceiling(32.0) 结果是 32与此对应的是向下舍位取整 Math.Floor.例如: Math.Floor(32.6) 结果是32

在android开发过程中我们常常遇到数据类型的转换,其中double转int类型是最常见的 方法一:强制转换 int i ; double db; i = (int) db; 这种方法会丢失小数点后面的值 int i ; double db; i = (int)Math.pow(db2, n); 这种方法的好处是不会丢失小数点

最简单是用printf("%.2lf"), sprintf()等函数. 或者你自己写也行,比如3.14要四舍五入到整数 那么3.14 + 0.5 然后强制转换成整形 doulbe num = 3.14; num = (int)(num+0.5); 其他小数点的,如同.

因为无论是double还是int都是二进制储存,在二进制小数转换成十进制很容易出现误差导致问题,改成下面代码就看得出:int main() { double a; int b; int c; a=1234.56; b=(int)a; a=a-b;//这里a=0.5599999999 c=(int)(a*100);//55.99999999转换成int时,小数直接去掉,所以是55 return 0; }

使用强制类型转换,就是要转换的类型,加个括号.int ia; double da; ia=1234; da=(double)ia;//这样da就等于1234.00 da=12.34567; ia=(int)da;//这样ia就等于12,问题是这种转换会损失精度,小数部分被截取还可以接受,如果double超出了int的最大值,高出部分的位数也会被截掉,那就是灾难性的了,所以一般不做这种转换,除非你对待转换的数据大小心中有数.

你如果要对于小数点四舍五入的话,可以int a = (int)(b+0.5);这样转换.

nczl.net | qwrx.net | wlbk.net | rtmj.net | xaairways.com | 网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com