关于强制转换的一个问题? 你上面说4/5=0.8是吧!想想你的c定义成整型,而a/b的结果却是浮点型。很明显类型有问题你可把a/b的答案先转换成整型再试试看一下如何? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像double的0不是一个真正意义上的0,而是一个近似于0的非0值 有顺序的。 对于float转int或double转int等都是不能转的。 而反过来可以。 0.8当然不能转成int 当java中的类型转换属于缩小转换时,必须使用类型强制转换,如果你改成(int)(a/b) ,就没事了。这样,会把小数点部分截断。要不你就想你前面做的那样。让表达式类型提升,全部提升成double类型。那样也不会错。 浮点数的赋值是带有小数点的数字缺省是double型的,如果在浮点数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式的浮点数也是double型的,而double的精度比float高,将一个高精度的double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。 首先明确一点,double是对a生效,而不是对a/b生效,否则要表达为(double)(a/b);第二,JAVA中的浮点运算中有三个特殊的值:正无穷大---------Double.POSTIVE_INFINITY 正数被0除就是这个常量!!!负无穷大---------Double.NEGATIVE_INFINITY非数字-----------Double.NaN我认为零就是零,没什么近似不近似的,任何进制都能表达,也不是0.1!!当(double)a后,要做除法时,b的类型会先隐式转换int-->double,这样转化成浮点运算,既然是double浮点运算就不会抛出异常,因为以上说的3个特殊常量有定义。但是你要做int c=a/b就不行了,本身就都是整型,你除0算什么啊?!! 看了一下ArithmeticException地说明:Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.它强调了整数除0抛出例外 关于javac的问题!!在线急需解决方法!!高分悬赏 有谁知道哪里有POI包下载 定位问题....高手帮助 有一段php程序,请求高手改成java,谢谢 在写hashcode时为什么要使用一个31这样的数 关于if语句 强烈要求新开Mobile Agent论坛 大家用的J2SDK都是哪个版本的呀! 请问为什么JSDK装好后,没有LIB子目录,也没有jsdk.jar,谢谢! 求助高手,21点游戏 Java11项核心技术是什么? 精确度问题
0.8当然不能转成int
要不你就想你前面做的那样。让表达式类型提升,全部提升成double类型。那样也不会错。
正无穷大---------Double.POSTIVE_INFINITY 正数被0除就是这个常量!!!
负无穷大---------Double.NEGATIVE_INFINITY
非数字-----------Double.NaN我认为零就是零,没什么近似不近似的,任何进制都能表达,也不是0.1!!
当(double)a后,要做除法时,b的类型会先隐式转换int-->double,这样转化成浮点运算,既然是double浮点运算就不会抛出异常,因为以上说的3个特殊常量有定义。但是你要做int c=a/b就不行了,本身就都是整型,你除0算什么啊?!!
Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.它强调了整数除0抛出例外