在C语言中如何划分数字?

在C语言中如何划分数字?,c,C,结果: test3的值=0.000000 为什么它不给我一个分数作为浮点值?它应该说: test3的值=0.142857 我做错了什么?编译器必须执行1.0/7.0或1/7.0或1.0/7 1/7是简单的整数除法,即0。只有整数除法的结果被强制转换并存储在test3中,如果两个参数都是整数,则返回一个整数 包括随机数(如评论中所述): 要在包含下限和独占上限之间生成随机数,请执行以下操作: double test3 = 1/7; NSLog(@"The value of test3 = %1.

结果:

test3的值=0.000000

为什么它不给我一个分数作为浮点值?它应该说:

test3的值=0.142857


我做错了什么?

编译器必须执行
1.0/7.0
1/7.0
1.0/7

1/7
是简单的整数除法,即
0
。只有整数除法的结果被强制转换并存储在
test3
中,如果两个参数都是整数,则返回一个整数


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

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

double test3 = 1/7;
NSLog(@"The value of test3 = %1.6f",test3);

请注意,应该使用
arc4random\u uniform(x)
(谢谢rmaddy!),因为它优于
arc4random()%x
rand()%x
,,我必须这样做,例如,rand()*1.0/rand()*1.0,以便用两个变量获得相同的效果。@Sparky我不确定,我会这样明确地强制转换它们:
(double)rand()/(double)rand()
您实际上可以只执行
1/7.0
1.0/7
。只要一个值是浮点值,您就可以了。@Sparky
random()&1500
不会返回介于0和1500之间的“公平”随机数。执行
+random()%()
如前所述,在下限和上限之间生成一个随机数。请注意,下限是包含的,上限是独占的。还请注意,使用
arc4random()
更好,因为它优于
rand()
。使用
arc4random\u uniform(X)更好
而不是
arc4random()%X
int randomNum = lowerBound + arc4random_uniform(upperBound - lowerBound);