浮点数的小数如何转化为二进制数?

作者&投稿:诗皆 (若有异议请与网页底部的电邮联系)
~

1.首先,小数化成二进制是用【乘基数取整法或者叫乘二取整法】。


2.例如: 第一步 0.6 * 2=1.2,取整就是1,所以最高位就是1【或者说从左往右数的第一位是1】;

第二步就是把小数后的数提取出来就是 0.2,然后用 0.2 * 2=0.4,这时小数部分第二位就是0;

第三步提取小数部分是0.4,就有 0.4 * 2=0.8,小数部分第三位就是0;

第四步 0.8 * 2=1.6 ,小数部分第四位就是1;

第五步 0.6 *2 =1.2【又是0.6已经重复了,进入死循环】,一直如此重复下去,终止条件是乘出来的结果为0或者达到你需要的精度为止。【目前只是计算了五步,显然0.6的二进制为:0.1001100110011001......】


3.这时你会发现上面的步骤会一直循环的计算下去【不考虑达到精度的问题】,实际上这永远算不完!这就是著名的浮点数精度问题。因为计算机的浮点数是用有限的位数来表达的,所以浮点数永远无法在计算机精确表示,这也就是计算机C/C++语言判断浮点数是否相等,而不直接用==的原因。


4.C语言代码如下:

#include<stdio.h>
#include<stdlib.h>
#define NUM 2
#define ZERO 0.000001
//整数部分的转换 
void integer(int n)
{
if (n>0)
{
integer(n / NUM);
printf("%d", n%NUM);
}
}
//小数部分的转换 
void decimal(double m)
{
if (m>ZERO)
{
m = m*NUM;
printf("%d", (long)m);
decimal(m - (long)m);
}
}
int main(void)
{
double f;
long n;
printf("请输入一个10进制的小数:");
scanf("%lf", &f);
if (f<0)
{
printf("-");
f = -f;
}
n = (long)f;//整数部分 
printf("转换成%d进制的小数为:", NUM);
integer(n);
printf(".");
decimal(f - n);//小数部分的转换 
printf("
");
return 0;
}

结果如图所示:




外汇的点数怎么计算?
一标准手一个点为十美金,最低可以交易0.1个标准手,也就是一个点一美金,个别货币稍微有别于这个标准单位,比如美日一标准手为10.3美金。如果有什么想了解的可以咨询我的团队 你这么理解是完全错误的。简单说做得手数只是占用的保证金,杠杆不一样,占用的不一样多,那个点是固定的,跟手数没...

梦幻西游中如何加小数位的点数?如4.5力.1.5敏
4.5力 0.5敏 也就是说 2级10点属性点 9点力 1点敏

某小数点的点数向右移一位,得到的数比原来大18。原数多少
这道题这样算,18÷(10-1)=2,原数是2。

股票的点数
25%。那么股票交易中一点是多少,若是整数,就是1%;若有小数,例如1.38,就是1.38%。你若想计算深市和沪市的上涨一点和下跌一点相当多少钱,就以两市昨天收盘的流通市值减去今天收盘的流通市值,用其差额除以今天的下跌点数,就知道下跌一点相当多少钱了.反之,就可计算上涨1点相当多少钱了....

用C语言怎么实现浮点数的四舍五入,保留两位小数点
C语言怎么实现浮点数的四舍五入,保留两位小数的设计过程为:定义浮点点数变量df,输入浮点数 浮点数df扩大100倍 浮点数df增加0.5 利用floor()函数得到最接近df数,但不大于df的整数(完成四舍五入)。不能用int强制转换,否则,数据超过int范围就会出现错误。浮点数df缩小100倍得到有两位小数的浮点数...

请问外汇点差是精确到小数点后面多少位?
0003."点差"∶最小浮动单位,当汇率变化时,点数波动的差值为"点差"。例如美元\/日元(USDJPY)由120.00变为121.00时,121.00-120.00=1.00日元,点差为100点。英镑\/美元(GBPUSD),由1.0000变为0.9800时,点差为200点(此换算0.0001美元对应点数是1点,这取决于小数点后有几位有效数字)。

100除以小数点数怎么算
百分数转化成小数时,用百分号前面的数除以100,所得的商(用小数表示)就是所求;也可以直接将百分号前面的数的小数点向左移动两位,移动后的数就是所求。

八分之一有点数吗
有。通过计算可知,八分之一是有点数的,结果是0.125。是实数的一种特殊的表现形式。所有分数都可以表示成小数,小数中的圆点叫做小数点,它是一个小数的整数部分和小数部分的分界号。

...把点数忘了结束得出的数是9006原来的小数是0求原来的数是_百度知...
小明在读一个小数时,把小数点漏掉了,结果读成了9006。原来的小数可能是多少?900.6:九百点六 90.06:九十点零六 9.006:九点零零六

7.088保留2位小数点数是多少
7.088保留2位小数点数是7.09

平湖市18682392321: 叙述十进制浮点数的整数部分和小数部分转换成二进制的方法 -
禹冒逍遥: 十进制的整数部分转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位...

平湖市18682392321: 浮点的十进制数字,如何转换成二进制? -
禹冒逍遥: 十进制数的小数点部分转二进制用的是“乘2取整正排序”的方法:如下: 0.712*2=1.424 取整 1 0.424*2=0.848 取整0 0.848*2=1.696 1 0.696*2=1.392 1 0.392*2=0.748 0 0.748*2=1.568 1 0.568*2=1.136 1 0.136*2=0.272 0 如果这样下去出现了循环的现象,那么就在循环前处结束; 如果一直没有循环,那么就取你想要的位数就可以了 这样得到了对应小数点后二进制为:0110110...

平湖市18682392321: 十进制小数怎么转换为二进制小数 -
禹冒逍遥: 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止.如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时...

平湖市18682392321: 如何转换浮点数的二进制格式为十进制 -
禹冒逍遥: 二进制的小数转换为十进制主要是乘以2的负次方,从小数点后开始,依次乘以2的负一次方,2的负二次方,2的负三次方等. 例如:二进制数0.001转换为十进制. 第一位为0,则0*1/2,即0乘以2负一次方. 第二位为0,则0*1/4,即0乘以...

平湖市18682392321: 十一进制33转为十进制30的具体计算过程. -
禹冒逍遥: 因为要参加软考了(当然也只有考试有这种魅力),我得了概浮点数转化为二进制表示这个最难的知识点(个人认为最难).俺结合大量的从网上收集而来的资料现整理如下,希望对此知识点感兴趣的pfan有所帮助.基础知识:十进制转十六进...

平湖市18682392321: 二进制中浮点数怎么表示 -
禹冒逍遥: 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号.下面是具体的规格:符号位 阶...

平湖市18682392321: 将121.8125十进制数转化为二进制数?要求写出整数部分和小数部分的计算过程如何做 -
禹冒逍遥: 整数部分和小数部分一般分开进行计算. 121除以2余1,所以第1位为1,商60 60除以2余0,所以第2位为0,商30 30除以2余0,所以第3位为0,商15 15除以2余1,所以第4位为1,商7 7除以2余1,所以第5位为1,商3 3除以2余1,所以第6位为...

平湖市18682392321: 如果十进制中是一个小数如何将它转换成二进制? -
禹冒逍遥: 好像是把小数乘以2,例如:十进制的0.625转换为二进制,只要把0.625*2=1.25……取1 0.25*2=0.5………取0 0.5*2=1…………取1 所以十进制的0.625转换为二进制就是0.101 规律就是把小数乘以2,如果小数点前面有整数就减1,把余下的再乘以2,知道把所有小数的化为整数.

平湖市18682392321: 计算机是如何存储浮点数的(工作原理,实现方式) -
禹冒逍遥: 计算机用二进制来表示数字,浮点数也是如此: 首先了解如何用二进制表示小数(也就是如何把十进制小数转化为二进制表示): 举一个简单例子,十进制小数 10.625 1)首先转换整数部分:10 = 1010b 2)小数部分0.625 = 0.101b (用“乘2...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网