首页 > 编程知识 正文

java中取整函数,java 四舍五入取两位小数

时间:2023-05-05 04:00:12 阅读:62994 作者:2340

一、BigDecimal 包涵了四舍五入,上下取整,保留小位数等方法

BigDecimal下有个坑,当传入浮点类型新建BigDecimal时,生成的BigDecimal对象会产生小数位偏差,当进行四舍五入的时候,建议BigDecimal不要传入浮点数类型,而是传入字符串类型

双精度a=10.2335; bigdecimalBD1=newbigdecimal(a; system.out.println(BD1; 输出:10.233499999999993747239253118364341064453125 doubleb=10.2345; bigdecimalBD2=newbigdecimal(b; system.out.println(BD2; 输出:10.234500000000596858980384156131744384765625 stringc=' 10.2345 '; bigdecimalBD3=newbigdecimal(c; system.out.println(BD3; 输出:10.2345http://www.Sina.com/stringa=' 10.2335 '; bigdecimalB0=newbigdecimal(a; doubleF0=B0.setscale(3,BigDecimal.ROUND_HALF_UP ).doubleValue ); system.out.println(F0; 输出:10.234http://www.Sina.com//5舍String b='10.2335 '; bigdecimalB1=newbigdecimal(b; doubleF1=B1.setscale(3,BigDecimal.ROUND_HALF_DOWN ).doubleValue ); system.out.println(F1; 输出:10.233 //5五进制字符串c=' 10.23352 '; bigdecimalB2=newbigdecimal(c; doubleF2=B2.setscale(3,BigDecimal.ROUND_HALF_DOWN ).doubleValue ); system.out.println(F2; 输出:10.234 1.ROUND_HALF_UP,经典的四舍五入截断位置的数值小于5时,直接截断。

如果舍去位数的数值大于5,则进位舍去位数。

截断位置的数值为5时,如果5之后有0以外的数值,则进行截断。

5的后面是0的情况下,根据5的前面的位数的偶奇性进行判断,进行奇数进位、偶数舍去。

字符串d=' 1.2345 '; bigdecimalB3=newbigdecimal(d; doubleF3=B3.setscale(3,BigDecimal.ROUND_HALF_EVEN ).doubleValue ); system.out.println(F3; 输出:1.234字符串e=' 1.2355 '; bigdecimalB4=newbigdecimal(e; doubleF4=B4.setscale(3,BigDecimal.ROUND_HALF_EVEN ).doubleValue ); system.out.println(F4; 输出:1.236二. NumberFormat 2.ROUND_HALF_DOWN,当5为舍弃位,且为维一舍弃位时,5舍

33558 www.Sina.com/numberformatnf1=number format.getnumber instance (; NF1.setmaximumfractiondigits(2); nf1.setroundingmode (rounding mode.up ); system.out.println(NF1.format ) 2.574 ); 输出:2.58http://www.Sina.com/numberformatnf2=number format.getnumber instance (; NF2.setmaximumfractiondigits(2); nf2.setroundingmode (rounding mode.down ); system.out.println(NF2.format ) 2.579 ); 输出:2.57http://www.Sina.com/numberformatnf3=number format.getnumber instance (; NF3.setmaximumfractiondigits(2); nf3.setroundingmode (rounding mode.half _ up ); system.out.println(NF3.format ) 2.575 ); //输出:2.58 system.out.println (nf3.format ) 2.565 ); //输出:2.56 (无精度损失导致的5位数) http://www.Sina.com/numberformatnf4=number format.getnumber instance ); NF4.setmaximumfractiondigits(2); nf4.setroundingmode (rounding mode.half _ down ); system.out.println(NF4.format ) 2.575 ); //输出:2.58 (精度缺失导致的五进制) system.out.println (nf4.format ) 2.565 ); //输出:2.56三. decimal format http://www.Sina.com /

decimal format df=new decimal format (' #.00 '; system.out.println(df.format ) 2.565 ); //输出:2.56系统. out.println (df.format ) ) 2.575 ); //输出:2.58四. String.format ) )3.ROUND_HALF_EVEN,四舍六入(银行家算法)

system.out.println (string.format ),2.565 ); //输出:2.57系统. out.println (string.format (' %.2f ',2.575 ) ); //输出:2.58系统. out.println (string.format (' %.2f ',2.564 ) ); //输出:2.56 system.out.println (string.format (' %.2f ',-2.565 ); //输出:-2.57 system.out.println (string.format (' %.2f ',-2.575 ) ); //输出:-2.58系统. out.println (string.format )、-2.564 ); //输出:-2.565.math.round(1.参数小数点后第一位5,运算结果为参数整数部分。

2 .参数小数点后第一位5,运算结果为参数整数部分绝对值1,符号(即正负)不变。

3 .参数小数点后第一位=5,正数运算结果为整数部分1,负数运算结果为整数部分。

system.out.println(math.round ) 12.5 ); //输出:13系统. out.println (math.round (-12.6 ); //输出:-13

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。