0

我正在做以下事情

float years = (1/31536000) * 883102.00;

我得到年= 0000000

而实际答案是 0.0.28

关于可能出现问题的任何建议?

4

7 回答 7

3

你应该改为

float years = (1.0/31536000.0) * 883102.00;

或者

float years = (1.0/31536000) * 883102.00;

可能也有效。您的第一个数字被视为整数。

于 2013-08-07T16:33:28.187 回答
3

做就是了

float years = 883102.00/31536000;

这将节省计算。因为你是用 1 潜水然后相乘。或者,只需将 1 设置为 1.00

于 2013-08-07T16:36:12.033 回答
1

1 是一个整数。然后编译器假定您有兴趣在 int 中工作,然后 1/3153600 变为 0。只需在 1 中添加一个 .0,您的 calc 就可以工作了。

float years = (1.0/31536000) * 883102.00;
于 2013-08-07T16:33:18.057 回答
1

第一项被转换为int,因此被四舍五入为0。尝试这个:

float years = (1.00 / 31536000.00) * 883102.00
于 2013-08-07T16:33:58.367 回答
1

(1/31536000) 将产生 0,乘以任何数字将为 0。使分子或分母中的至少一个浮动(如 1.0 或 31536000.0)

于 2013-08-07T16:34:07.670 回答
1

883102.0 / 31536000会做你想做的。

于 2013-08-07T16:35:45.537 回答
1

因为整数除法

(1/31536000)

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

(1.0/31536000.0) or (1./31536000.)
于 2013-08-07T16:36:00.070 回答