关于四舍五入取小数点2位 int f=(int)(A*100+0.5);double F=(double)f/100;为什么这样输出的F就是能去到小数点2位的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int f中就已经把小数的部分给去掉了啊。再转回来也不会提高精度的。 public static void main(String[] args) { //没损失精度的 double g=(1.211111*100+0.5); System.out.println("g====="+g); double G = g/100; System.out.println("G====="+G); //下面是损失精度后的 int f=(int)(1.211111*100+0.5); System.out.println("f====="+f); double F=(double)f/100; System.out.println("F====="+F); }结果是g=====121.61110000000001G=====1.2161110000000002f=====121F=====1.21 LZ可以参考一下下面的代码import java.math.RoundingMode;import java.text.NumberFormat;public class Test3 { public static void main(String[] args) { System.out.println(function2(123.455, 2)); System.out.println(function2(123.449, 2)); System.out.println(function2(123.44, 3)); System.out.println(function2(123.4455, 3)); System.out.println(function2(123.4499, 3)); System.out.println(function2(123.9, 0)); } /** * * @param value 要进行四舍五入的数字 * @param decimalPlaces 要保留的小数点位数,如果最后一位是0 则不显示 * @return */ public static double function2(double value, int decimalPlaces) { NumberFormat nf = NumberFormat.getNumberInstance(); nf.setRoundingMode(RoundingMode.HALF_UP); // 四舍五入 nf.setMaximumFractionDigits(decimalPlaces); nf.setMinimumFractionDigits(decimalPlaces); return Double.valueOf(nf.format(value)); }} 杨辉三角形问题 BufferReader读完文件后怎么重新定位到文件起始位置 请问c3p0连接池怎么读Properties配置文件? 大侠们快来回答,关于引用的问题(菜神的问题) 关于native方法的定义头,帮我选择下。 新手提问,JAVA 流的问题 谁有JDK1.4中文的API文档,谢谢!! java中对小数位的四舍五入的问题: 结果值不符合预期. java -version 和javac -version异同 新手问路! 大神们 小弟我初学java 麻烦指教下 新手求教,看看哪里不对,编译没问题,可结果不对
中就已经把小数的部分给去掉了啊。
再转回来也不会提高精度的。
//没损失精度的
double g=(1.211111*100+0.5);
System.out.println("g====="+g);
double G = g/100;
System.out.println("G====="+G);
//下面是损失精度后的
int f=(int)(1.211111*100+0.5);
System.out.println("f====="+f);
double F=(double)f/100;
System.out.println("F====="+F);
}
结果是
g=====121.61110000000001
G=====1.2161110000000002
f=====121
F=====1.21
import java.math.RoundingMode;
import java.text.NumberFormat;public class Test3 {
public static void main(String[] args) {
System.out.println(function2(123.455, 2));
System.out.println(function2(123.449, 2));
System.out.println(function2(123.44, 3));
System.out.println(function2(123.4455, 3));
System.out.println(function2(123.4499, 3));
System.out.println(function2(123.9, 0));
}
/**
*
* @param value 要进行四舍五入的数字
* @param decimalPlaces 要保留的小数点位数,如果最后一位是0 则不显示
* @return
*/
public static double function2(double value, int decimalPlaces) {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setRoundingMode(RoundingMode.HALF_UP); // 四舍五入
nf.setMaximumFractionDigits(decimalPlaces);
nf.setMinimumFractionDigits(decimalPlaces);
return Double.valueOf(nf.format(value));
}}