import java.math.BigInteger; import java.math.BigDecimal; import java.math.MathContext; public class Demo6 { public static void main(String[] args){ MathContext m = new MathContext(10); int a1 = 3737373; BigInteger a2 = new BigInteger("7171717171"); BigDecimal b1 = new BigDecimal(a1); BigDecimal b2 = new BigDecimal(a2); System.out.println(b1.divide((b2),new MathContext(10))); }
float i=37373737f;
float j=7171717171f;
System.out.println(i/j);哈哈,楼主你看看这样行不
public static void main(String[] args) {
BigDecimal a=new BigDecimal(37373737);
BigDecimal b=new BigDecimal(Long.valueOf("7171717171"));
System.out.println(a.divide(b,30,BigDecimal.ROUND_HALF_UP));
}
BigDecimal a=new BigDecimal(37373737);
BigDecimal b=new BigDecimal(Long.valueOf("7171717171"));
System.out.println(a.divide(b,30,BigDecimal.ROUND_HALF_UP));
}
上面这段代码是什么意思呀?
如果真是这么简单楼主回来这提问题吗?
初学者会郁闷的问题是
7171717171
已经超出了int的范围,这么写是编译不过去的所以要Long.valueOf("7171717171")把它变成long
超出int范围的数字做加减乘除运会导致溢出,结果不对所以使用BigDecimal
即便使用BigDecimal 仍然有溢出问题所以指定小数点后30位
最后的ROUND_HALF_UP是指定舍入模式,模式有好几种 不光是四舍五入。所以不要再告诉楼主
System.out.println(37373737/7171717171)
import java.math.BigInteger;
import java.math.BigDecimal;
import java.math.MathContext;
public class Demo6 {
public static void main(String[] args){
MathContext m = new MathContext(10);
int a1 = 3737373;
BigInteger a2 = new BigInteger("7171717171");
BigDecimal b1 = new BigDecimal(a1);
BigDecimal b2 = new BigDecimal(a2);
System.out.println(b1.divide((b2),new MathContext(10))); }
}