c语言 浮点数怎么存入数组,如何得出一个浮点数的小数部分,要把各个位保存到一个数组里边。...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*************************************************************************

> File Name: float_decimal.c

> Author:wangfeilong

> Mail:

> NOTE:32位机。

> Created Time: 2019年07月08日 星期一 04时10分37秒

************************************************************************/

#include

#include

extern void printf_bit(int *array,int count);

extern void array_bit(int array_len,float need_data);

int main(int argn,char *argv[])

{

float data_float =0;

int scanf_judeg =0;

while(1)

{

scanf_judeg =scanf("%f",&data_float);

printf("io:%d,%d\n",scanf_judeg,sizeof(float));

if( -1 == scanf_judeg )

{

printf("quit\n");

return 0;

}

if( !scanf_judeg )

{

printf("please input float_data\n");

while( getchar() != '\n');

continue;

}

if( data_float >-1e-6 && data_float <1e-6)

{

printf("无小数位\n");

continue;

}

if( 4 == sizeof(float) )

{

array_bit(32-1-8+1,data_float);

}

}

return 0;

}

void array_bit(int array_len,float need_data)

{

int move =0x80000000;

int count =0;

int integer_number =0;

int copy_data = *((int *)&need_data);

int array[array_len];

memset(array,0,sizeof(array));

copy_data =copy_data <<1;

integer_number = (unsigned char)*(((char *)&copy_data)+3)-127;

printf("p:%d\n",integer_number);

if( integer_number >= 0 )

{

copy_data =copy_data << (8+integer_number);

}

else if( integer_number < 0)

{

integer_number =0-integer_number;

copy_data =copy_data << (8+integer_number);

for( count; count

{

array[count] =0;

if( count == integer_number-1 )

{

array[count] =1;

count++;

break;

}

}

}

move = move >> (32-8-integer_number-1);

copy_data = copy_data & move;

printf("move=%d,copy_data=%d\n",move,copy_data);

do

{

for( count; count < array_len; )

{

if( copy_data >0 )

{

printf("r\n");

array[count++] =0;

}

if( copy_data <0 )

{

printf("tt\n");

array[count++] =1;

}

copy_data =copy_data <<1;

break;

}

}while(copy_data);

printf_bit( array,count);

return ;

}

void printf_bit(int *array,int count)

{

int head =0;

printf("小数位:0b");

for( ; head< count; head++)

{

printf("%d",array[head]);

}

putchar('\n');

return ;

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值