当前位置: 技术问答>java相关
请问,JAVA里有什么可以将一个数字截取到小数点后第二位后的函数么?谢谢
来源: 互联网 发布时间:2015-09-18
本文导语: 想123.45678 得到123.46 有这样的函数么? 谢谢 | 现成的不知道,不过你可以自己做一个: class j { public static void main(String[] args) { double i=12345.2345; double temp1=i-(int)i; int temp2=(int)(temp1*100); double...
想123.45678
得到123.46 有这样的函数么?
谢谢
得到123.46 有这样的函数么?
谢谢
|
现成的不知道,不过你可以自己做一个:
class j {
public static void main(String[] args) {
double i=12345.2345;
double temp1=i-(int)i;
int temp2=(int)(temp1*100);
double temp3=(int)i+temp2*0.01;
System.out.println(temp3);//result:12345.23
}
}
class j {
public static void main(String[] args) {
double i=12345.2345;
double temp1=i-(int)i;
int temp2=(int)(temp1*100);
double temp3=(int)i+temp2*0.01;
System.out.println(temp3);//result:12345.23
}
}
|
如果想保证精度的同时要求四舍五入的话
这样即可:
double f = 34.232323;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数
上面是对double类型的处理,如果对float的,则将上面所有的double字段换成float就行
这样即可:
double f = 34.232323;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数
上面是对double类型的处理,如果对float的,则将上面所有的double字段换成float就行
|
如果要四舍五入的话:
class j {
public static void main(String[] args) {
double i=12345.2355;
double temp1=i-(int)i;
//下一行做了改动(原先:int temp2=(int)(temp1*100);)
double temp2=Math.round(temp1*100);
double temp3=(int)i+temp2*0.01;
System.out.println(temp3);
}
}
class j {
public static void main(String[] args) {
double i=12345.2355;
double temp1=i-(int)i;
//下一行做了改动(原先:int temp2=(int)(temp1*100);)
double temp2=Math.round(temp1*100);
double temp3=(int)i+temp2*0.01;
System.out.println(temp3);
}
}
|
我是这样用的:
DecimalFormat df = new DecimalFormat("0.##");
double tmp = df.format(123.5678);
DecimalFormat df = new DecimalFormat("0.##");
double tmp = df.format(123.5678);
|
支持用DecimalFormat,它存在于java.text.*中;但在许多应用领域里,比如分析化学,使用的规则是四舍六入五成双的法则,而不是四舍五入。