我正在写一些我需要将29除以10的地方。但是当我这样做并将其存储在一个double中时,它输出2.0000而不是2.9。有人能解释为什么会发生这种情况以及如何解决这个问题吗?
double a = 29/10;
output: 2.0000
答案 0 :(得分:3)
double
按预期工作,只是因为您没有为其指定double
类型的表达式。
您指定的内容为int
,是29
,int
,10
除以int
的结果。这是2
,因为在除以整数时会丢弃余数。
将29
更改为29.0
或10
更改为10.0
可解决此问题。
答案 1 :(得分:1)
29 / 10
执行整数除法。结果是2(余数为9)。
尝试(double)29 / 10
或29.0 / 10
。
答案 2 :(得分:1)
这是一个经典的C错误:你正在进行整数除法并请求浮点结果。
您应该使用
进行浮点除法 return parent = a;
如果要发现有关浮点运算的所有详细信息,则应阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。