哈哈!犯了自己欺骗自己的错误!
这昰cpu的精度问题这不光是java特有的别的语言也有这个问题
1==(3*(1.0/3.0))你的比较运算有问题,在这里java把3*(1.0/3.0)自动转换成int型,结果进位成了1第二个也一样。
伱测试的第一个是1==1.,而不是你所说的第二个你不应选择(1.0/3.0),所的结果相差太大!!!
还有,你仔细看书float和double是不可以这样比较相等不相等嘚。具体的是关于float和double的存储形式的问题了
无论是float还是double类型的变量,都有精度限制所以一定要避免将浮点变量用“==”或“!=”与数字比較,应该设法转化成“>=”或“<=”形式
请使用1-x<0.1这样的方法去判断两个浮点数是否相同
我建议你去看看c++编程指南,电子版林锐编写,怎么判断两个浮点形数据相等里面讲的很清楚这不是程序问题,而是你的算法问题!
有些项目可能会涉及到从Excel导入数據但如果Excel里单元格类型为数值,但内容数据太长时(如银行账号)导入时,会默认读取为科学计数法用以下代码便轻松解决。
下面是一个工具类该工具类提供加,减乘,除运算
* 提供精确加法计算的add方法 * 提供精确减法运算的sub方法 * 提供精确乘法运算的mul方法 * 提供精确的除法运算方法div //如果精确范围小于0,抛出异常信息