none
double、long数据运算时,类型怎么转换? RRS feed

  • 问题

  • 我看的是美国Ivor Horton的书,他说,转换故则是:“double型和另一个数运算,要把另一个转换成double型”;但另一条规则是:“long型的和另一个数运算,要把另一个转换成long型”。我的问题:
    (1)double型和long型运算怎么转换?
    (2)有没有更通用的转换规则?
    (3)顺便问下,double型数据,占8字节,有几字节表示小数的?和计算机组成原理里的“阶码”位数是什么关系?
    请高手指导,先谢谢了!

    2009年3月31日 6:14

答案

  • 用强制转换,如double a=0;
                         long b=3;
                         a=(double)b;

    double转long类似,强制转换就用(所需类型)


    小数在计算机里是按IEEE754标准,阶码是2的指数,8字节共64位,其中一位符号位,52位尾数位,11位阶码位
    2009年3月31日 8:35
  • 前两个问题我不太明白,
    第三个问题
    double和float C++在内存中都使用IEEE格式保存。
    对于double来说
    1个标志位
    11个阶码位
    52个尾数
    有几位表示小数的话,最多可以表示52位。
    符号位  指数                                        尾数
    1       011 1111 1111              0011 0011 0011 0011 0011 0011 0011
                                                 0011 0011 0011 0011 0011 0011 

    2009年3月31日 8:38
    版主

全部回复

  • 用强制转换,如double a=0;
                         long b=3;
                         a=(double)b;

    double转long类似,强制转换就用(所需类型)


    小数在计算机里是按IEEE754标准,阶码是2的指数,8字节共64位,其中一位符号位,52位尾数位,11位阶码位
    2009年3月31日 8:35
  • 前两个问题我不太明白,
    第三个问题
    double和float C++在内存中都使用IEEE格式保存。
    对于double来说
    1个标志位
    11个阶码位
    52个尾数
    有几位表示小数的话,最多可以表示52位。
    符号位  指数                                        尾数
    1       011 1111 1111              0011 0011 0011 0011 0011 0011 0011
                                                 0011 0011 0011 0011 0011 0011 

    2009年3月31日 8:38
    版主
  • 我明白了,谢谢两位了
    2009年4月1日 1:47