三九宝宝网宝宝百科宝宝知识

为什么double类型的数值进行运算得不到数学上精确的结果

01月06日 编辑 39baobao.com

[二进制的运算规则]1)二进制的运算算术运算 加法法则: 0+0=0;0+1=1; 1+0=1;1+1=10。 乘法法则: 0*0=0;0*1=0; 1*0=0;1*1=1。 上面列出的八条二进制运算法则可以归纳成八个字:“格式照旧,满二进一。...+阅读

这个涉及到二进制与十进制的转换问题。

N进制可以理解为:数值*基数的幂,例如我们熟悉的十进制数123.4=1*10²+2*10+3*(10的0次幂)+4*(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1*2+1*(2的0次幂)+0+1*(2的-2次幂)=十进制的3.25。

double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。

简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

以下为关联文档:

分数小数的混合运算加减法100道1+1/5+1/6-1/12-1/1=? 1+1/5+1/6-1/12-1/2=? 1+1/5+1/6-1/12-1/3=? 1+1/5+1/6-1/12-1/4=? 1+1/5+1/6-1/12-1/5=? 1+1/5+1/6-1/12-1/6=? 1+1/5+1/6-1/12-1/7=? 1+1/5+1/6-1/1...

csGO怎么显示fps数值CSGO显示fps设置方法:首先需要开启控制台:游戏开始界面——“选项”——“游戏设置” 找到“启用开发者控制台(~)”,选择“是” 之后,在游戏中只要按“~”按键(Esc下面)即可开启控制...

python的浮点数运算是不是精度有问题阿再计算机的硬件中,浮点数以二进制小数表示。比如小数 [python] view plain copy 0.125 可看做1/10+2/100+5/1000,同样的方式二进制小数 [python] view plain copy 0.001 可看...

六年级简便运算题目小学六年级数学总复习资料(六) 【简便计算】 班级: 姓名: 一、口算下面各题。(23分) 10-2.65= 0.9*0.08= 528-349= 6+14.4= 24÷0.04= 12.34-2.3= 0÷3.8= 0.77+0.33= 7÷1.4= 67....

六年级数学题简便运算1.解:原式=(3/2-7/3+13/14)* -42 =(-21*3)-(-14*7)-(13*3) 乘法分配律 =-63+98-39 去括号 =(-60-3)+(100-2)-(40-1) =-60-3+100-2-40+1 =-3-2+1 =-4 2.解:原式=8*【(-22/7)*(-0.125)...

六年级数学简便运算题目○1 添(去)括号的应用 1、7.35-(1.9+2.35) 2、933-157-43 3、8.8-6.75+9.2-0.25 4、41*102 5、3.6+9.7+6.4 6、4.67-(2.98+0.67) 7、7.15-(2.7+4.15) 8、2.89+2.7+7.3+3.21 9...

什么决定计算机的运算精度字长。 位(bit):一位二进制数,又称比特。 字节(byte):内存存储的最小单元。 字长:同一时间内,计算机能处理的二进制位数。字长决定了计算机的运算精度,字长越长,计算机的运算精度就越高...

C double类型数值怎样获得是精确到多少位小数求精度转换成字符串,判断小数点位置 首先判断是否有小数点,如果没有,得到结果0 如果有小数点,使用indexof判断小数点位置,然后根据字符串总长度,如123.45,得到小数点位置为3,总长度为6,那么...

Java中 double类数据运算精度不准怎么解决在大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中,这种问题是非常严重的。在《Effective Java》中提到一个原则,那就是float和double只能用...

推荐阅读
图文推荐