C双倍未按预期工作

C双倍未按预期工作,c,C,我正在写一些我需要用29除以10的东西。但当我这样做并将其存储在double中时,它输出2.0000而不是2.9。有人能解释为什么会发生这种情况以及如何解决它吗 double a = 29/10; output: 2.0000 double按预期工作,只是您没有为其指定类型为double的表达式 您分配给它的是一个int,是将29、一个int除以10、一个int的结果。这是2,因为除整数时,余数将被丢弃 将29更改为29.0或将10更改为10.0将解决此问题。double按预期工作,只是您没

我正在写一些我需要用29除以10的东西。但当我这样做并将其存储在double中时,它输出2.0000而不是2.9。有人能解释为什么会发生这种情况以及如何解决它吗

double a = 29/10;

output: 2.0000

double
按预期工作,只是您没有为其指定类型为
double
的表达式

您分配给它的是一个
int
,是将
29
、一个
int
除以
10
、一个
int
的结果。这是
2
,因为除整数时,余数将被丢弃


29
更改为
29.0
或将
10
更改为
10.0
将解决此问题。

double按预期工作,只是您没有为其指定类型为
double
的表达式

您分配给它的是一个
int
,是将
29
、一个
int
除以
10
、一个
int
的结果。这是
2
,因为除整数时,余数将被丢弃


29
更改为
29.0
或将
10
更改为
10.0
将解决此问题。

29/10
执行整数除法。结果是2(剩余9)


尝试
(双精度)29/10
29.0/10

29/10
执行整数除法。结果是2(剩余9)


试试
(double)29/10
29.0/10

这是一个典型的C错误:您正在进行整数除法并请求浮点结果

您应该使用

double a = 29.0/10.0;

如果您想了解有关浮点运算的所有详细信息,请阅读

这是一个典型的C错误:您正在进行整数除法并请求浮点结果

您应该使用

double a = 29.0/10.0;

如果您想了解有关浮点运算的所有详细信息,请阅读

可能的副本可能的副本为清晰起见,最好写
(双精度)29/10
为清晰起见,最好写
(双精度)29/10