㈠ java中,强制转换符把float转换为int时,按四舍五入,还是直接丢掉小数部分
直接舍掉小数 比如float是4.7 转换成int 后是4 而不是5 要四舍五入的话转换前先加上0.5
比如 int i ; double j = 4.7; i = (int)(j+0.5);
㈡ java怎么将double四舍五入
// 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
return bg.doubleValue();
}
public static String formatDouble3(double d) {
NumberFormat nf = NumberFormat.getNumberInstance();
// 保留两位小数
㈢ 关于java double类型四舍五入的算法
这是为什么呢?
//double类型直接转换成为BigDecimal还是会造成精度丢失
解决方案
//把double类型首先转换为String类型,然后再把String类型转换成BigDecimal类型
实例代码
importjava.math.BigDecimal;
publicclassB{
publicstaticvoidmain(String[]args){
print0();
print1();
print2();
print3();//解决方案
}
privatestaticvoidprint0(){
doubled=12345.15;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint1(){
doubled=1234.115;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint2(){
doubled=2345.115;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint3(){
doubled=2345.115;
BigDecimalb=newBigDecimal(String.valueOf(d));//方案一
//BigDecimalb=newBigDecimal("2345.115");//方案二
//BigDecimalb=newBigDecimal(""+d);//方案三
System.out.println(d);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
}
输出
12345.
12345.1//四舍五入保留1位
1234.
1234.12//四舍五入保留2位
2345.
2345.11//四舍五入保留2位
2345.115
2345.12//四舍五入保留2位
㈣ java中,double d,用表达式表示d四舍五入后的int结果
(int) d,自动四舍五入吧
㈤ JAVA 将小数四舍五入成整数的方法
例子:
double d=1.2;
int i = (int)( d + 0.5);
㈥ java怎么把double四舍五入
(1)首先我们想到用先乘以100取整后再除以100.0这种做法:
System.out.println(Math.round(4.015*100)/100.0);
执行结果为4.01,显然没有达到我们想要的结果。
(2)那用java.text.DecimalFormat呢?
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));
System.out.println(new java.text.DecimalFormat("0.00").format(4.025));
执行结果都为4.02。
(3)用java.math.BigDecimal.
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
double abc = 4.015; //4.025
System.out.println(new java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
结果:4.01 (当使用4.025时结果为4.03)
看来还是达不到效果。
(4)用下面的方法:
System.out.println(Math.round(4.015*100 + 0.5)/100.0);
㈦ java中double四舍五入问题
(1)首先我们想到用先乘以100取整后再除以100.0这种做法:
System.out.println(Math.round(4.015*100)/100.0);
执行结果为4.01,显然没有达到我们想要的结果。
(2)那用java.text.DecimalFormat呢?
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));
System.out.println(new java.text.DecimalFormat("0.00").format(4.025));
执行结果都为4.02。
(3)用java.math.BigDecimal.
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
double abc = 4.015; //4.025
System.out.println(new java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
结果:4.01 (当使用4.025时结果为4.03)
看来还是达不到效果。
(4)用下面的方法:
System.out.println(Math.round(4.015*100 + 0.5)/100.0);