如何在C中划分数字?

Spa*_*rky -3 c

double test3 = 1/7;
NSLog(@"The value of test3 = %1.6f",test3);
Run Code Online (Sandbox Code Playgroud)

结果:

The value of test3 = 0.000000

为什么它不会给我一个浮动值的分数?它应该说:

The value of test3 = 0.142857

我究竟做错了什么?

Thr*_*eFx 5

你所要做的1.0 / 7.0或者1 / 7.01.0 / 7编译器做浮点除法.

1/7是简单的整数除法,即0.只有整数除法的结果被存储和存储,test3并且如果两个参数都是整数,那么你将得到一个返回的整数.


要包含随机数(如评论中所述):

要在包含低位和独占上限之间生成随机数,请执行以下操作:

int randomNum = lowerBound + arc4random_uniform(upperBound - lowerBound);
Run Code Online (Sandbox Code Playgroud)

请注意,应该使用arc4random_uniform(x)(感谢rmaddy!)因为它优于arc4random() % xrand() % x.

  • 你实际上可以只做"1/7.0"或"1.0/7".只要一个值是浮点值就可以了. (2认同)