在java 中怎么把java double 强转int类型转成 int类型

在java 里怎么把Int转换为double型
全部答案(共1个回答)
1、int是c标准规定的4字节的长度,而对于字长不同的cpu架构而言,其不同的字长应该表现在sizeof(long)的值不同;
2、而Thumb模式与arm模式...
int (*p)() 表示一个函数指针,返回值为int型,没有参数的函数
unsigned int是无符号整形,说白了就是都是正数,没有负数,当然包括0;
int就是既有正数又有负数,如果最高位为1则表示负数;
//第二次回答,按照你的程序我认为这样编写,前提已有byte[]
String s =
BinaryString(i);
b[0] =
答: 大连最好的java培训学校在哪
答: 这个要设计到JNI的开发,就是用Java来调用C语言的函数库,还要编写缓冲器来解决传输问题,还有就是网络协议一定要了解,做的时候要用多线程来控制你所有的缓冲器,...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;
一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415java学习之数值类型转换(int&,float,double等)
<img ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/UploadFiles_/14782.jpg"
TITLE="java学习之数值类型转换(int&,float,double等)" />
2.中数字类型的转换法则
test1中看似除数中的所有的因子都被约掉了,只剩下了1000。但实际的输出却是5,而不是我们期望的1000。究其原因,是因为MICROS_PER_DAY按int类型进行的计算,而计算的结果是,已经超出了int类型的最大值,即溢出了(因int为32位,2^31-1=),24*60*60*最后的结果是(见程序中的print1的输出)。
在产生了错误的计算结果后,该结果被付给了long型的MICROS_PER_DAY,long型为64位,故保持了这个错误的结果,最终导致了最终结果的错误。
解决该问题的方法是,通过使用long常量来代替int常量作为每一个乘积的第一个因子,这样就可以强制表达式中所有的后续计算都使用long运算来完成,这样就不会丢失精度,即:
MICROS_PER_DAY = 24L*60*60*;
图中的六个实箭头表示了无信息损失的转换,而三个虚箭头表示的转换则可能丢失精度。
3.浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。
例如上面的test2,我们预期的得到的结果是0.1,但实际的输出却是0.9999。
这种误差产生的原因是因为浮点数实际上是用二进制系统表示的。而分数1/10在二进制系统中没有精确的表示,其道理就如同在十进制系统中无法精确表示1/3一样。看完下面的第4点就可以明白其中的原因了。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
4.既然说到了浮点型是使用二进制表示的,那么就再来复习以下这方面的内容。
&1)简单介绍下IEEE754标准
中的float,double以及其对应的包装类Float和Double,都依据IEEE754标准。
一个实数V在IEEE 754标准中可以用V=(-1)s&M&2E 的形式表示,说明如下:
(1)符号s (sign)决定实数是正数(s=0)还是负数(s=1),对数值0的符号位特殊处理。
(2)有效数字M是二进制小数,M的取值范围在1≤M<2或0≤M<1。
&&&&&&&&&&
说明:尾数M用原码表示。
&&&&&&&&&&&&&&&&&&&&&&&&
根据原码的规格化方法,最高数字位(整数部分)总是1,该标准将这个1缺省
&&&&&&&&&&&&&&&&&&&&&&&&
,使得尾数表示范围比实际的一位。即M存储的只是小数部分。
&&&&&&&&&&&&&&&&&&&&&&&&
(看到后面的例子就会明白啦)
(3)指数E是2的幂,它的作用是对浮点数加权。
&&&&&&&&&&
说明:由于E是用移码表示,32位的float类型需要加上偏移量127,64位的double
&&&&&&&&&&&&&&&&&&&&&&&&
类型要加上偏移量1023
下图即为float(32位)和double(64位)的存储格式:
2)十进制小数与二进制小数的相互转换
例1:二进制转十进制
例2:十进制数转换成二进制数,是把整数部分和小数部分分别转换,整数部分用2除,取余数,小数部分用2乘,取整数位。
如:把(13.125)10转换成二进制数
1)整数部分:13/2 商6& 余1
&&&&&&&&&&&&&&&&
6/2& 商3& 余0
&&&&&&&&&&&&&&&&
3/2& 商1& 余1
&&&&&&&&&&&&&&&&
1/2& 商0& 余1
&&& 故整数部分为
2)小数部分:
&&& 因此,
下面再举几个规范化表示的例子(以float类型为例):
十进制小数1.25
二进制表示为1.01
&&& 规范化二进制表示即
&&& 符号位:0
指数部分:0+127=127
&&&&&&&&&&&&&&&&&&&&&&&&
尾数部分:
注:尾数部分只存储了小数部分的(0.01),整数部分的1是默认存储的。这正好
&&&&&&&&&&
验证了4-1)-(2)要说明的问题。
最终结果为 0
十进制小数0.75
二进制表示为0.11
&&& 规范化表示即
&&& 符号位:0
指数部分:-1+127=126
&&&&&&&&&&&&&&&&&&&&&&&&
尾数部分:
&&& 最终结果: 0
十进制-2.5
&&& 二进制表示为
&&&&&&&&&&&&&&&&&&&
规范化后为 *1.01*
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
指数部分:1+127=128
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
尾数部分:
&&&&&&&&&&&&
最终结果:1
注:浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近,
&&&&&&&&&&&&&&&
但不等于。一般情况下,分母不是 的情况下,一般都无法精确表示(虽然这种表
&&&&&&&&&&&&&&&
述可能不太严谨)。
5.补充知识
IEEE754的四种舍入方向
向最接近的可表示的值;当有两个最接近的可表示的值时首选“偶数”值;向负无穷大(向 下);向正无穷大(向上)以及向0(截断)。
说明:舍入模式也是比较容易引起误解的地方之一。我们最熟悉的是四舍五入模式,但是,IEEE
754标准根本不支持,它的默认模式是最近舍入(Round to
Nearest),它与四舍五入只有一点不同,对.5的舍入上,采用取偶数的方式。举例比较如下:
最近舍入模式:Round(0.5) = 0; Round(1.5) = 2; Round(2.5) = 2;
四舍五入模式:Round(0.5) = 1; Round(1.5) = 2; Round(2.5) = 3;
主要理由:由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。在两个可以精确表示的相邻浮点数之间,必定存在无穷多实数是IEEE浮点数所无法精确表示的。如何用浮点数表示这些数,IEEE
754的方法是用距离该实数最近的浮点数来近似表示。但是,对于.5,它到0和1的距离是一样近,偏向谁都不合适,四舍五入模式取1,虽然银行在计算利息时,愿意多给0.5分钱,但是,它并不合理。例如:如果在求和计算中使用四舍五入,一直算下去,误差有可能越来越大。机会均等才公平,也就是向上和向下各占一半才合理,在大量计算中,从统计角度来看,高一位分别是偶数和奇数的概率正好是50%
: 50%。至于为什么取偶数而不是奇数,大师Knuth有一个例子说明偶数更好,于是一锤定音。
原码、反码、补码、移码
对于正数,原码和反码,补码都是一样的,都是正数本身。 对于负数,原码是符号位为1,数值部分取X绝对值的二进制。
反码是符号位为1,其它位是原码取反。 补码是符号位为1,其它位是原码取反,未位加1。 也就是说,负数的补码是其反码未位加1。
移码就是将符号位取反的补码。
在计算机中,实际上只有加法运算,减法运算也要转换为加法运算, 乘法转换为加法运算,除法转换为减法运算。
在计算机中,对任意一个带有符号的二进制,都是按其补码的形式进行运算和存储的。
之所以是以补码方式进行处理,而不按原码和反码方式进行处理,是因为在对带有符号位的
原码和反码进行运算时,计算机处理起来有问题。(具体原因见理解原码,反码与补码)
而按补码方式,一方面使符号位能与有效值部分一起参加运算,从而简化运算规则.
另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Java鏁版嵁绫诲瀷杞?崲锛堣嚜鍔ㄨ浆鎹㈠拰寮哄埗杞?崲锛塤寰??鑻}

我要回帖

更多关于 java double 强转int 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信