C double没有按预期工作
问题描述:
我正在写一些需要将29除以10的数据。但是当我这样做并将其存储在双精度数据库中时,它将输出2.0000而不是2.9。有人可以解释为什么会发生这种情况,以及如何解决它?C double没有按预期工作
double a = 29/10;
output: 2.0000
答
的double
按预期工作,它只是你没有分配给它double
类型的表达式。
你分配什么这是一个int
,将29
,一个int
,通过10
的结果,int
。这是2
,因为在分割整数时其余部分被丢弃。
将29
更改为29.0
或10
改为10.0
将解决此问题。
答
这是一个经典的C错误:您正在进行整数除法并请求浮点结果。
你应该做一个浮点除法与
double a = 29.0/10.0;
你应该阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic如果你想发现浮点运算的所有细节。
可能的重复[为什么将两个整数分开不会浮动?](http://stackoverflow.com/questions/16221776/why-dividing-two-integers-doesnt-get-a-float) – OldProgrammer