C 浮动精度

C 浮动精度,c,floating-accuracy,C,Floating Accuracy,由于微控制器的精度,我定义了一个包含两个flotants数之比的符号,而不是直接写入结果 #define INTERVAL (0.01F/0.499F) 而不是 #define INTERVAL 0.02004008016032064F 但第一个解决方案添加了另一个操作“/”。如果我们通过优化和正确的结果进行推理,那么最好的解决方案是什么?它们是相同的,编译器将在编译时计算0.01F/0.499F 您的常量值0.01F/0.499F=0.02004008016032064F中

由于微控制器的精度,我定义了一个包含两个flotants数之比的符号,而不是直接写入结果

#define INTERVAL         (0.01F/0.499F)
而不是

#define INTERVAL 0.02004008016032064F

但第一个解决方案添加了另一个操作“/”。如果我们通过优化和正确的结果进行推理,那么最好的解决方案是什么?

它们是相同的,编译器将在编译时计算
0.01F/0.499F


您的常量值
0.01F/0.499F=0.02004008016032064F

中有错误,它们是相同的,编译器将在编译时计算
0.01F/0.499F


您的常量值
0.01F/0.499F=0.02004008016032064F

中有错误,它们是相同的,编译器将在编译时计算
0.01F/0.499F


您的常量值
0.01F/0.499F=0.02004008016032064F

中有错误,它们是相同的,编译器将在编译时计算
0.01F/0.499F


您的常量值中有错误
0.01F/0.499F=0.02004008016032064F
0.01F/0.499F
在编译时计算。编译时使用的精度取决于编译器,可能超过微控制器的精度。因此,这两种方法通常都会提供相同的代码

在不太可能的情况下,编译器的精度与微控制器的
float
和典型的二进制浮点差不多,值
0.01F
0.499F
将不精确,但在0.5ULP(最后的单位)之内。商
0.01F/0.499F
将在大约sqrt(2)*0.5 ULP范围内。使用
0.02004008016032064F将在0.5 ULP范围内。所以在某些情况下,常数比商更好

在更罕见的情况下,
float
精度将超过
0.02004008016032064F
,商会更好


最后,建议对用于驱动方程式的任何值进行编码。e、 g.如果
0.01
0.499
是两个电阻器的值,则使用这两个值。

0.01F/0.499F
在编译时计算。编译时使用的精度取决于编译器,可能超过微控制器的精度。因此,这两种方法通常都会提供相同的代码

在不太可能的情况下,编译器的精度与微控制器的
float
和典型的二进制浮点差不多,值
0.01F
0.499F
将不精确,但在0.5ULP(最后的单位)之内。商
0.01F/0.499F
将在大约sqrt(2)*0.5 ULP范围内。使用
0.02004008016032064F将在0.5 ULP范围内。所以在某些情况下,常数比商更好

在更罕见的情况下,
float
精度将超过
0.02004008016032064F
,商会更好


最后,建议对用于驱动方程式的任何值进行编码。e、 g.如果
0.01
0.499
是两个电阻器的值,则使用这两个值。

0.01F/0.499F
在编译时计算。编译时使用的精度取决于编译器,可能超过微控制器的精度。因此,这两种方法通常都会提供相同的代码

在不太可能的情况下,编译器的精度与微控制器的
float
和典型的二进制浮点差不多,值
0.01F
0.499F
将不精确,但在0.5ULP(最后的单位)之内。商
0.01F/0.499F
将在大约sqrt(2)*0.5 ULP范围内。使用
0.02004008016032064F将在0.5 ULP范围内。所以在某些情况下,常数比商更好

在更罕见的情况下,
float
精度将超过
0.02004008016032064F
,商会更好


最后,建议对用于驱动方程式的任何值进行编码。e、 g.如果
0.01
0.499
是两个电阻器的值,则使用这两个值。

0.01F/0.499F
在编译时计算。编译时使用的精度取决于编译器,可能超过微控制器的精度。因此,这两种方法通常都会提供相同的代码

在不太可能的情况下,编译器的精度与微控制器的
float
和典型的二进制浮点差不多,值
0.01F
0.499F
将不精确,但在0.5ULP(最后的单位)之内。商
0.01F/0.499F
将在大约sqrt(2)*0.5 ULP范围内。使用
0.02004008016032064F将在0.5 ULP范围内。所以在某些情况下,常数比商更好

在更罕见的情况下,
float
精度将超过
0.02004008016032064F
,商会更好


最后,建议对用于驱动方程式的任何值进行编码。e、 g.如果
0.01
0.499
是两个电阻器的值,则使用这两个值。

如答案所示,它们是相同的。根据这个常数的使用环境,可能有更好的方法来优化它。正如答案所说,这些都是相同的。根据这个常数的使用环境,可能有更好的方法来优化它。正如答案所说,这些都是相同的。根据这个常数的使用环境,可能有更好的方法来优化它。正如答案所说,这些都是相同的。根据该常数的使用环境,可能有更好的方法对其进行优化。但0.02004008016032064F是通过我的电脑计算的,而不是通过微控制器。你确定精度是一样的吗?是的