所以我试图对存储在一组int中的int进行数学运算。
float day1Hours = (day1[3]-day1[2]) / 2;
对于这个特定的问题,day1 [3] = 19和day1 [2]是10.因此,它应该是19-10 = 9,然后除以2得到4.5。但是,我得到的输出是4.我也尝试将day1Hours存储为双,但没有区别。我如何能够正确地进行数学运算并获得我需要的那些十进制值?
答案 0 :(得分:2)
问题是您正在进行整数除法,然后转换为float
。尝试
float day1Hours = (day1[3]-day1[2]) / 2.0f;
在分母中使用float
字面值会导致除法以浮点形式完成,并且不会得到整数截断。 (作为使用float
字面值的替代方法,您可以将分子或分母强制转换为float
,但这对我来说似乎有些巴洛克式。如果分子和分母都是{{},那将更合适{1}}变量。)
仅更改int
的类型不会影响问题的原因是首先使用声明的数据类型day1Hours
评估整个右侧,然后将其转换为任何类型的作业的左边。
答案 1 :(得分:0)
float day1Hours = (float)(20-9) / 2; //5.5
答案 2 :(得分:0)
问题是在等式的右边,数字是整数,当划分2个整数时,小数位被截断(整数除法向零舍入)4.5 - > 4.0。
尝试更改2 - > 2f所以2被认为是浮点而不是整数。