数学计算 - 浮点数

时间:2013-08-07 16:31:00

标签: c++

我正在做以下

float years = (1/31536000) * 883102.00;

我得到年= 0000000

而实际答案是0.0.28

有关可能出错的任何建议吗?

7 个答案:

答案 0 :(得分:3)

你应该改为

float years = (1.0/31536000.0) * 883102.00;

float years = (1.0/31536000) * 883102.00;

也可以。您的第一个数字被视为整数。

答案 1 :(得分:3)

只做

float years = 883102.00/31536000;

这将节省计算。 因为你正在以某种方式潜水,然后成倍增加。 或者只设置1到1.00

答案 2 :(得分:1)

1是一个int。然后编译器假定您有兴趣使用ints,然后1/3153600变为0.只需将.0添加到1,您的计算就可以了。

float years = (1.0/31536000) * 883102.00;

答案 3 :(得分:1)

第一个词被投射为int,因此被舍入为0。试试这个:

float years = (1.00 / 31536000.00) * 883102.00

答案 4 :(得分:1)

(1/31536000)将产生0乘以任何数字为0。 至少使用分子或分母浮点数(如1.0或31536000.0)

答案 5 :(得分:1)

883102.0 / 31536000会做你想做的事。

答案 6 :(得分:1)

由于整数分部

(1/31536000)

小数位数被截断,结果为“零”。 你必须添加一个点:

(1.0/31536000.0) or (1./31536000.)