[菜鸟谢谢大家了]关于强制类型转换中double转int问题 本帖最后由 abbot123 于 2010-01-27 11:03:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的问题:可是,当要转换的double类型的数值大于int的取值范围,也就是大于2147483647时, 转换后的数总是2147483647,这是为什么呢? 当你使用强制转换的时候即更改变量的类型,而变量类型有整型,实型,字节,字符,布尔这几种,强制类型换中double转int时,内存空间也跟着变,即double(内存中占8个字节)转int(内存中占4个字节)后,Int在内存中的数值范围:2147483647~-2147483648,Double数值范围:1.797693e+308~4.900000e-324你强制类型换中double转int时,类型变为Int了,当然存值范围也变更,你的数字大了,内存空间只有那么一点,所以只能存内存空间的最大值,其他的溢出了回去看书吧,这么基础的解释也废劲,就相当于1+2为何等于3,因为1+2中的2等同于1+1,所以1+2=1+1+1=3不知道你楼主你明白了没有 整型和浮点型的数字存储布局不一样的整型是1符号位,后面数字位,所以long转int就取模,就是后32位浮点型的double是1符号位11指数位52小数位以及1023偏移附加,虽然和long同样占64位,但是存储方式完全不一样,转int时不是取模的 哎。楼主,如果你只能一次吃1kg食物,我给你1吨,你说你这次是吃1kg呢,还是1吨? 这就是规定吧,从来没考虑过这个问题。有一点要知道,基本类型的转换,在编译器处理后会变成一串指令。这一串指令会从原来的值运算得到转换后的值。这和引用类型的“转换”是不同的。楼主的发现,应该就体现了Java编译器是如何处理基本类型转换的吧。 提示:英文教材中,基本类型(如从double到int)的转换,叫做Type Conversion;引用类型的“转换”,叫做Class Casting。用词完全不同,体会一下这里的差别吧。不知道哪位高人,把两者混为一谈然后教育别人。居然还流行了起来。 int 和double存在空间大小不一致 这跟怎么存储没啥关系 关键是java语言设计让你这样做它同样可以设计成转换溢出时变成负的 变成0 或者干脆报错 为什么long转int时,会把超出4个字节的部分砍掉,而double转int时确总是2147483467呢?这个我也不懂为什么,还是要看原理的书... 在WIN中正常,LINUX下报java.lang.NullPointerException 网络维权成为新兴的维权方式 求助静态内类的实例化问题!! 在线等! 请问关于List和hashmap的书,有哪些写的比较好的? java事务很ORACLE存储过程事务隔离级别,哪个起作用? 在unix下面如何将UTF-8转换成中文编码? 谁能提供一下java的数据库驱动 关于oracle正则的问题,跪求 JAVA怎样实现子窗口没有关闭的情况下 父窗口不能被操作 连接数据库 面向对象小程序的问题 求解!! 推荐几本书
转换后的数总是2147483647,这是为什么呢?
当你使用强制转换的时候即更改变量的类型,而变量类型有整型,实型,字节,字符,布尔这几种,强制类型换中double转int时,内存空间也跟着变,即double(内存中占8个字节)转int(内存中占4个字节)后,Int在内存中的数值范围:2147483647~-2147483648,Double数值范围:1.797693e+308~4.900000e-324
你强制类型换中double转int时,类型变为Int了,当然存值范围也变更,你的数字大了,内存空间只有那么一点,所以只能存内存空间的最大值,其他的溢出了
回去看书吧,这么基础的解释也废劲,就相当于1+2为何等于3,因为1+2中的2等同于1+1,所以1+2=1+1+1=3
不知道你楼主你明白了没有
整型是1符号位,后面数字位,所以long转int就取模,就是后32位
浮点型的double是1符号位11指数位52小数位以及1023偏移附加,
虽然和long同样占64位,但是存储方式完全不一样,转int时不是取模的
楼主,如果你只能一次吃1kg食物,我给你1吨,你说你这次是吃1kg呢,还是1吨?
有一点要知道,基本类型的转换,在编译器处理后会变成一串指令。这一串指令会从原来的值运算得到转换后的值。这和引用类型的“转换”是不同的。
楼主的发现,应该就体现了Java编译器是如何处理基本类型转换的吧。
英文教材中,基本类型(如从double到int)的转换,叫做Type Conversion;引用类型的“转换”,叫做Class Casting。用词完全不同,体会一下这里的差别吧。
不知道哪位高人,把两者混为一谈然后教育别人。居然还流行了起来。
它同样可以设计成转换溢出时变成负的 变成0 或者干脆报错
这个我也不懂为什么,还是要看原理的书...