首页 存档 技术 查看内容

Java中的陷阱题

2018-3-30 13:00 |来自: 互联网 289 0

摘要: 官方微博:动力节点 1、找奇数: public static boolean isOdd(int i){ return i % 2 == 1; } 上面的方法真的能找到所有的奇数么? A:没有考虑到负数问题,如果i为负则不正确。应该return i%2 == 0 2.浮点数相减 S ...

官方微博:动力节点


1、找奇数:

public static boolean isOdd(int i){ 
		 return i % 2 == 1; 
	}

上面的方法真的能找到所有的奇数么?

A:没有考虑到负数问题,如果i为负则不正确。应该return i%2 == 0

2.浮点数相减

System.out.println(2.0-1.9);

A:Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。当然加减乘除都有可能有问题,比如:

System.out.println(0.05 0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);

这是因为有些十进制有限位数的小数,到二进制里面可能会变成无限循环小数,在浮点数中不能表示而损伤精度。

解决方法:

1. 如果是判断a-b是否等于c,或者a b是否等于c的,可以使用

if(0.05 0.01-0.06
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部