Math.round();//四舍五入
为下陆等地区用户提供了全套网页设计制作服务,及下陆网站建设行业解决方案。主营业务为成都网站设计、成都做网站、外贸网站建设、下陆网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Math.ceil();//向上取整
向你这175取180需要除10后向上取整或者是四舍五入后在乘以10
我来告诉你原因吧
up=四舍五入
down=五会舍去,大于5就入
然后你程序是错的
BigDecimal a = new BigDecimal(1.525);
BigDecimal b = new BigDecimal(-1.525);
System.out.println(a);
System.out.println(b);
new BigDecimal最好用string,你直接写数字的话,结果不是你想要的,以上程序,结果是:
1.524999999999999911182158029987476766109466552734375
-1.524999999999999911182158029987476766109466552734375
浮点数是不精确的
分给我吧
这是因为整数在计算机中是二进制存储的。
java中 ~5=-6 ,而这个-6是输出到屏幕上,我们看到的是-6。
首先看对5求反,
5的二进制原码是:0000 0101,
取反之后是:1111 1010 ,得到的这个值在计算机中的存储原型也是 1111 1010,而要把这个结果显示出来,到计算机屏幕上就要转换成十进制,也就是说 1111 1010 是补码形式,
补码 = 原码取反 + 1。
补码要换算成对应的十进制就是
原码取反 = 补码 -1
所以 1111 1010 - 1 = 1111 1001, 然后再对 1111 1001 取反,得到 1000 0110,
所以 原码就是 1000 0110,对应的十进制就是 -6。
同样的,这样看也行:
-6在计算机中的存储为二进制补码形式,也就是说-6的补码是 1000 1010 (-6的二进制原码是:1000 0110,源码取反之后是 1111 1001,再加上1就是 1111 1010,这就是补码了)。
public static void main(String[] args) {
int h=0;
byte byte1 = Byte.parseByte(Integer.toString(5,h+=2), h);
byte byte2 = Byte.parseByte(Integer.toString(10,h+=2), h);
byte byte3 = Byte.parseByte(Integer.toString(20,h+=2), h);
byte byte4 = Byte.parseByte(Integer.toString(30,h+=2), h);
byte byte5 = Byte.parseByte(Integer.toString(124,h+=2), h);
StringBuilder sb = new StringBuilder(100);
sb.append("byte1:");
sb.append(byte1);
sb.append('\n');
sb.append("byte2:");
sb.append(byte2);
sb.append('\n');
sb.append("byte3:");
sb.append(byte3);
sb.append('\n');
sb.append("byte4:");
sb.append(byte4);
sb.append('\n');
sb.append("byte5:");
sb.append(byte5);
sb.append('\n');
System.err.println(sb);
}