doble float小程序

http://blog.csdn.net/Tunix126/archive/2006/10/17/1338464.aspx

 

这里有个网站,可以帮助理解,也可以验证过自己写的程序是否正确,

#include <stdio.h>

typedef unsigned
long    u32;

typedef
struct x_double_type_t     x_double_type;
struct x_double_type_t
{
    u32 low_32;
    u32 hi_32 ;
};

#define double     x_double_type

void f2d( float f , double *x )
{
    u32 a , b;
    u32 uf
= *(u32*)&f;
    u32
*ux = (u32*)x;
   
    ux[
0] = ux[1] = 0;
    ux[
1] |= uf&0x80000000;
   
    a
= (uf&0x7f800000)>>23;
    b
= uf&0x7fffff;
    a
+= 1024 - 128;
    ux[
1] |= a<<20;
    ux[
1] |= b>>3 ;
    ux[
0] |= b<<29;   
}

int main()
{   
   
float  f = 3.14159265f;
   
double x;
   
    f2d( f ,
&x );   
    printf(
"%lf/n" , x );
   
   
while( 1 == scanf( "%f" , &f ) )
    {
        f2d( f ,
&x );
        printf(
"%lg/n" , x );
    }

return 0;   
}

 

 

初学时候对格式的理解存在一个误区,这个误区实际上来自网络,今天终于好好理解了一番。http://www.ebookee.net/IEEE-float-dl/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值