2016-11-05 109 views
0

我正在写一些需要将29除以10的数据。但是当我这样做并将其存储在双精度数据库中时,它将输出2.0000而不是2.9。有人可以解释为什么会发生这种情况,以及如何解决它?C double没有按预期工作

double a = 29/10; 

output: 2.0000 
+1

可能的重复[为什么将两个整数分开不会浮动?](http://stackoverflow.com/questions/16221776/why-dividing-two-integers-doesnt-get-a-float) – OldProgrammer

回答

3

double按预期工作,它只是你没有分配给它double类型的表达式。

你分配什么这是一个int,将29,一个int,通过10的结果,int。这是2,因为在分割整数时其余部分被丢弃。

29更改为29.010改为10.0将解决此问题。

1

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

尝试(double)29/1029.0/10

+1

For清晰度,写'(双)29/10'会更好 – chqrlie