Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 浮点运算_Algorithm - Fatal编程技术网

Algorithm 浮点运算

Algorithm 浮点运算,algorithm,Algorithm,我读到一些机器不能表达精确的浮点数,例如1.1 让我们看一下代码 float x=0.1; do{ x+=0.1; printf("%f\n",x); } while(x!=1.1); 此代码从未完成我如何才能完成此代码?可以将其转换为双精度或?例如,在可接受的范围内进行比较。即 while (abs(x-1.1)>0.001); 双打也会有同样的问题,只是更加精确。一些语言还提供rational类型,您可以指定一个数字作为分数1/10,或固定点数据类型。例如,在可接受的范围内进行

我读到一些机器不能表达精确的浮点数,例如1.1 让我们看一下代码

float x=0.1;
do{

x+=0.1;
printf("%f\n",x);
} while(x!=1.1); 

此代码从未完成我如何才能完成此代码?可以将其转换为双精度或?

例如,在可接受的范围内进行比较。即

while (abs(x-1.1)>0.001);

双打也会有同样的问题,只是更加精确。一些语言还提供rational类型,您可以指定一个数字作为分数1/10,或固定点数据类型。

例如,在可接受的范围内进行比较。即

while (abs(x-1.1)>0.001);

双打也会有同样的问题,只是更加精确。有些语言还提供rational类型,您可以将数字指定为分数1/10或定点数据类型。

在本例中,选中“在本例中,选中“如果您想完全按照您所说的方式编写代码,那么您需要使用类似decimal(如果可用)的类型它是以10为基数的浮点实现,而不是以2为基数的实现


进一步阅读:和

如果您想完全按照您所说的那样编写代码,那么您需要使用类似decimal(如果可用)的类型,它是以10为基数的浮点实现,而不是以2为基数的实现


进一步阅读:和

在固定点工作,完成那种任务


例如,类型可能会有所帮助。不过,这并不是所有问题的解决方案。

针对此类任务,在固定点工作


例如,类型可能会有所帮助。但这并不是所有问题的解决方案。

对于数值问题,通常指定精度的ε:

bool within_epsilon(float x, float y, float e) {
    if (abs(x - y) > e) {
        return false
    } else {
        return true
    }
}

您选择的ε将改变精度,您可以选择的ε取决于浮点实现:。

对于数值问题,通常指定精度ε:

bool within_epsilon(float x, float y, float e) {
    if (abs(x - y) > e) {
        return false
    } else {
        return true
    }
}

您选择的epsilon将改变您的精度,您可以选择的epsilon取决于您的浮点实现:.

+1表示epsilon,因为这将使人们能够以更简单的方式搜索此信息+1表示epsilon,由于这将使人们能够以更简单的方式通过谷歌搜索这些信息,你不应该对浮点数使用相等比较。这是我最喜欢的解释,解释为什么浮点数,任何精度或类型,无法准确表示所有实数:不应该对浮点数使用相等比较。这是我最喜欢的解释,解释了为什么任何精度或类型的浮点数都不能准确表示所有实数: