C语言浮点数误差如何解决?如下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言浮点数误差如何解决?如下相关的知识,希望对你有一定的参考价值。

#include
main()

int k;
float a=2.6;
while(a>=1)

sx=sx-1;
k++;
if(sx<1)

printf("1=%d\n",k);
k=0;


while(sx>=0.5)

printf("0.5=1\n");
sx=sx-0.5;

while(sx>=0.2)

sx=sx-0.2;
k++;
if(sx<0.2)
printf("0.2=%d\n",k);

while(sx>=0.1)

sx=0;
printf("0.1=1\n");

getch();


换成 sx=2.1也是一样, 这个0.1的误差应如何解决呢?

参考技术A 浮点数的比较很麻烦,像while(sx>=0.1)这个等号很不保险
要判断一个浮点数是否等于另外一个浮点数,一般是求二者的差,差的绝对值小于某给定值就算相等 像这样:
while((sx-0.1)<0.00001&&(0.1-sx)<0.00001)

sx=0;
printf("0.1=1\n");


总之,在程序中应该尽量避免浮点数的比较

以上是关于C语言浮点数误差如何解决?如下的主要内容,如果未能解决你的问题,请参考以下文章

js浮点数精度误差问题,解决方法

关于浮点型误差的解决方法

js浮点数运算出现误差解决方案

接单日记:理解浮点数运算的误差

浮点数float累加误差解决方式总结

Python浮点数误差与解决方法