C双倍未按预期工作
我正在写一些我需要用29除以10的东西。但当我这样做并将其存储在double中时,它输出2.0000而不是2.9。有人能解释为什么会发生这种情况以及如何解决它吗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按预期工作,只是您没
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